web-dev-qa-db-ja.com

SQL Serverエラー「アドホックアクセスOLE DBプロバイダー 'Microsoft.ACE.OLEDB.12.0'」」のヘルプ

したがって、SQL Server 2008 R2でビューをクエリしようとすると、次のエラーが表示されるという興味深い問題があります。

メッセージ7415、レベル16、状態1、行1 OLE DBプロバイダー 'Microsoft.ACE.OLEDB.12.0'へのアドホックアクセスが拒否されました。リンクサーバー経由でこのプロバイダーにアクセスする必要があります。

問題を調査したところ、OPENROWSETパラメータ、レジストリ値の変更、AdHoc DIstributed Queriesなどに変更を加えた記事がいくつかあります(以下の記事へのリンク)。

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-拒否されました/

上記のリンクの手順に従ってもエラーが発生します。

ここでの注意点は、テストアカウントを作成してsaを指定したときに、問題なく実行されたことです。管理者権限を持つ同僚も問題なくクエリを実行できます。

このクエリは、このインスタンスをホストしているサーバーのローカルのExcelファイルから提供されています。

2008年の他の修正を知っている人はいますか?

8
Johnny-boy

私は昨日同じ問題を抱えていましたが、これが私がそれをどのように解決できたかです:

[アドホックアクセスを許可しない]は[プロバイダーオプション]ページ(SQL Server Management Studio)では有効になっていませんが、

enter image description here

レジストリにはDisallowadHocAccess = 0キーがなく、何らかの理由でそこにあることが必要です。

enter image description here

レジストリにキーを追加した後、管理者以外のユーザーでもクエリを実行できました。

enter image description here

10
NTom
  1. プロバイダーで「アドホックアクセスを許可しない」が有効になっているかどうかを確認します。これは、SQL Management Studioの次のナビゲーションパスにあります。

  2. サーバーオブジェクト/リンクサーバー/プロバイダー/Microsoft.ACE.OLEDB.12.0

  3. "Microsoft.ACE.OLEDB.12.0"プロバイダーを右クリックし、コンテキストメニューから[プロパティ]を選択します。

  4. ポップアップウィンドウで、[アドホックアクセスを許可しない]チェックボックスがオフになっていることを確認します。

または、次のSQLを使用して無効に設定することもできます。

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

次に、レジストリキーが設定されていることを確認します。 Regeditで、次のようにナビゲートします。

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

注:デフォルトのインスタンスを使用している場合は、インスタンス名がない可能性があります。

別の注:コピーして.regファイルに貼り付け、キーを設定できます。

キーポイント:私の経験では、データベースにアクセスするユーザーが管理者タイプまたは所有者タイプのユーザーでない場合にのみ、レジストリキーが必要です。したがって、高セキュリティ環境ではこのレジストリキーが必要になります。

私の場合、[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQLServer\MSSQL _。\ Providers\Microsoft.ACE.OLEDB.12.0]に "DisallowAdhocAccess"という値= 0という名前のレジストリキーがあることを確認してください。存在しない場合は作成してください。

0
Hoang Tran