したがって、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
上記のリンクの手順に従ってもエラーが発生します。
ここでの注意点は、テストアカウントを作成してsaを指定したときに、問題なく実行されたことです。管理者権限を持つ同僚も問題なくクエリを実行できます。
このクエリは、このインスタンスをホストしているサーバーのローカルのExcelファイルから提供されています。
2008年の他の修正を知っている人はいますか?
私は昨日同じ問題を抱えていましたが、これが私がそれをどのように解決できたかです:
[アドホックアクセスを許可しない]は[プロバイダーオプション]ページ(SQL Server Management Studio)では有効になっていませんが、
レジストリにはDisallowadHocAccess = 0キーがなく、何らかの理由でそこにあることが必要です。
レジストリにキーを追加した後、管理者以外のユーザーでもクエリを実行できました。
プロバイダーで「アドホックアクセスを許可しない」が有効になっているかどうかを確認します。これは、SQL Management Studioの次のナビゲーションパスにあります。
サーバーオブジェクト/リンクサーバー/プロバイダー/Microsoft.ACE.OLEDB.12.0
"Microsoft.ACE.OLEDB.12.0"プロバイダーを右クリックし、コンテキストメニューから[プロパティ]を選択します。
ポップアップウィンドウで、[アドホックアクセスを許可しない]チェックボックスがオフになっていることを確認します。
または、次の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という名前のレジストリキーがあることを確認してください。存在しない場合は作成してください。