Trợ giúp với Lỗi máy chủ SQL Quảng cáo Học truy cập vào Học viện OLE DB 'Microsoft.ACE.OLEDB.12.0'


8

Vì vậy, chúng tôi có một vấn đề thú vị khi người dùng nhận được lỗi sau khi cố gắng truy vấn chế độ xem trong SQL Server 2008 R2:

Msg 7415, Cấp 16, Bang 1, Dòng 1 Truy cập trực tiếp vào nhà cung cấp OLE DB 'Microsoft.ACE.OLEDB.12.0' đã bị từ chối. Bạn phải truy cập nhà cung cấp này thông qua một máy chủ được liên kết.

Nghiên cứu vấn đề, tôi đã tìm thấy nhiều hơn một vài bài viết liệt kê các thay đổi đối với các tham số OPENWAYSET, thay đổi giá trị đăng ký, Truy vấn phân bổ AdHoc, v.v. (Liên kết đến các bài viết dưới đây)

http://www.johnsoer.com/blog/?p=538

http://www.remotebaexperts.com/Blog/dba_tips/2010/09/ad-hoc-access-to-ole-db-provider-microsoft-ace-oledb-12-0-has-been-denied/

Chúng tôi vẫn nhận được lỗi sau khi làm theo các bước trong các liên kết ở trên.

Thông báo trước ở đây là khi chúng tôi tạo một tài khoản thử nghiệm và cho nó vào - nó chạy tốt. Các đồng nghiệp của tôi có quyền truy cập quản trị viên cũng có thể chạy truy vấn mà không gặp sự cố nào.

Truy vấn này đang được cung cấp từ một tệp excel cục bộ đến máy chủ lưu trữ thể hiện này.

Bất cứ ai biết về bất kỳ sửa chữa khác cho năm 2008?

Câu trả lời:


10

Tôi vừa gặp vấn đề tương tự ngày hôm qua, và đây là cách tôi có thể giải quyết nó:

Mặc dù "Không cho phép truy cập adhoc" không được bật tại trang Tùy chọn nhà cung cấp (SQL Server Management Studio),

nhập mô tả hình ảnh ở đây

Sổ đăng ký không có khóa DisallowadHocAccess = 0 và vì một số lý do, bắt buộc phải có nó ở đó.

nhập mô tả hình ảnh ở đây

Sau khi tôi thêm khóa vào sổ đăng ký, tôi cũng có thể chạy Truy vấn với người dùng không phải là quản trị viên.

nhập mô tả hình ảnh ở đây


8
  1. Xác định xem "Không cho phép truy cập adhoc" được bật cho nhà cung cấp của bạn. Điều này có thể được tìm thấy trong SQL Management Studio thông qua đường dẫn điều hướng sau:

  2. Đối tượng máy chủ / Máy chủ được liên kết / Nhà cung cấp / Microsoft.ACE.OLEDB.12.0

  3. Nhấp chuột phải vào nhà cung cấp "Microsoft.ACE.OLEDB.12.0" và chọn "Thuộc tính" từ menu ngữ cảnh.

  4. Trong cửa sổ bật lên, đảm bảo rằng hộp kiểm "Không cho phép truy cập adhoc" bị xóa.

Ngoài ra, bạn có thể đặt nó thành vô hiệu hóa bằng cách sử dụng SQL sau:

sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE

Tiếp theo, xác minh rằng khóa Registry được đặt. Trong Regedit, điều hướng như sau:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQLServer\MSSQL<major version>_<minor version>.<instance name>\Providers\Microsoft.ACE.OLEDB.12.0]
"DisallowAdhocAccess"=dword:00000000

Lưu ý: Bạn có thể không có tên đối tượng nếu bạn đang sử dụng thể hiện mặc định.

Lưu ý khác: Bạn có thể sao chép và dán .regtệp đó vào một tệp để đặt khóa.

Điểm then chốt : Theo kinh nghiệm của tôi, bạn chỉ cần khóa đăng ký nếu người dùng truy cập cơ sở dữ liệu không phải là người dùng loại quản trị viên hoặc chủ sở hữu. Vì vậy, môi trường bảo mật cao sẽ cần khóa đăng ký này.


Tôi đã đăng câu trả lời này vì câu trả lời khác có hình ảnh mà tôi không thể nhìn thấy vì chúng bị chặn tại nơi làm việc của tôi. Vui lòng không sử dụng hình ảnh trừ khi bạn thực sự phải làm!
Slogmeister Extraordinaire

Thêm khóa đăng ký làm việc cho tôi; thông qua GUI, không.
Tim

0

Đối với tôi, hãy đảm bảo bạn có khóa đăng ký có tên "DisallowAdhocAccess" value = 0 trong [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQLServer \ MSSQL _. \ Providers \ Microsoft.ACE.OLEDB.12.0] Nếu không tồn tại, hãy tạo nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.