Bantuan dengan SQL Server Error "akses ad Hoc ke Penyedia OLE DB 'Microsoft.ACE.OLEDB.12.0'"

8

Jadi kami memiliki masalah yang menarik di mana pengguna menerima kesalahan berikut ketika mencoba untuk meminta tampilan di SQL Server 2008 R2:

Msg 7415, Level 16, Negara 1, Jalur 1 Akses ad hoc ke penyedia OLE DB 'Microsoft.ACE.OLEDB.12.0' telah ditolak. Anda harus mengakses penyedia ini melalui server yang ditautkan.

Meneliti masalah ini, saya telah menemukan lebih dari beberapa artikel yang membuat perubahan pada parameter OPENROWSET, perubahan nilai registri, Kueri Terdistribusi AdHoc, dll. (Tautan ke artikel di bawah)

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

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

Kami masih menerima kesalahan setelah mengikuti langkah-langkah di tautan di atas.

Peringatan di sini adalah bahwa ketika kami membuat akun uji dan memberikannya - itu berjalan dengan baik. Rekan saya dengan akses admin juga dapat menjalankan kueri tanpa masalah.

Kueri ini diumpankan dari file excel lokal ke server yang menjadi tuan rumah instance ini.

Adakah yang tahu tentang perbaikan lain untuk 2008?

Johnny-boy
sumber

Jawaban:

10

Saya baru saja mengalami masalah yang sama kemarin, dan di sini adalah bagaimana saya bisa menyelesaikannya:

Meskipun "Larang akses adhoc" tidak diaktifkan di halaman Opsi Penyedia (SQL Server Management Studio),

masukkan deskripsi gambar di sini

Registry tidak memiliki kunci DisallowadHocAccess = 0, dan untuk beberapa alasan diperlukan untuk memilikinya di sana.

masukkan deskripsi gambar di sini

Setelah saya menambahkan kunci ke registri, saya bisa menjalankan kueri dengan pengguna non-admin juga.

masukkan deskripsi gambar di sini

NTom
sumber
8
  1. Tentukan apakah "Larang akses adhoc" diaktifkan untuk penyedia Anda. Ini dapat ditemukan di SQL Management Studio melalui jalur navigasi berikut:

  2. Objek Server / Server Tertaut / Penyedia / Microsoft.ACE.OLEDB.12.0

  3. Klik kanan penyedia "Microsoft.ACE.OLEDB.12.0" dan pilih "Properties" dari menu konteks.

  4. Di jendela sembulan, pastikan bahwa kotak centang "Larang akses adhoc" sudah dihapus.

Atau, Anda bisa mengaturnya agar dinonaktifkan dengan menggunakan SQL berikut:

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

Selanjutnya, verifikasi bahwa kunci Registry diatur. Di Regedit, navigasikan sebagai berikut:

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

Catatan: Anda mungkin tidak memiliki nama instance jika Anda menggunakan instance default.

Catatan lain: Anda dapat menyalin dan menempelkannya ke .regfile untuk mengatur kunci.

Poin Kunci : Dari pengalaman saya, Anda hanya perlu kunci registri jika pengguna yang mengakses database bukan pengguna tipe admin atau pemilik. Jadi, lingkungan dengan keamanan tinggi akan memerlukan kunci registri ini.

Slogmeister Luar Biasa
sumber
Saya mengirimkan jawaban ini karena jawaban yang lain memiliki gambar yang tidak dapat saya lihat karena diblokir di tempat kerja saya. Tolong jangan gunakan gambar kecuali Anda benar-benar harus!
Slogmeister Extraordinaire
Menambahkan kunci registri berfungsi untuk saya; melalui GUI, bukan.
Tim
0

Bagi saya, pastikan Anda memiliki kunci registri bernama "DisallowAdhocAccess" value = 0 di [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQLServer \ MSSQL _. \ Providers \ Microsoft.ACE.OLEDB.12.0] Jika tidak ada, buatlah.

Hoang Tran
sumber