memocon プログラミングのメモや物欲日記、雑記等

Sql Serverで「プロバイダーはローカルコンピュータに登録されていません」が出る

2013年07月11日 16時33分

Sql ServerへaccessやExcelからデータを登録する必要があったので以下のようなQuery書いたらすんなりいかなかったのでメモ。

エラーメッセージ「Microsoft.ACE.OLEDB.12.0プロバイダーはローカルコンピュータに登録されていません」が表示される。

以下のページから再配布可能コンポーネントをSql Serverの入ってるPCにインストールする。

Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント
http://www.microsoft.com/ja-jp/download/details.aspx?id=13255

環境はWindows Server Standard 2007(?)とSql Server2008だったけど再起動は不要だった。

インストールが完了してデータプロバイダは追加されたけど次は「xxへのアドホック アクセスが拒否されました。リンク サーバーを使用してこのプロバイダにアクセスしてください。」と出る。

どうやらセキュリティ周りっぽい。
下の引用Queryで設定変更してもそれだけだと駄目だった。

ad hoc distributed queries サーバー構成オプション
http://msdn.microsoft.com/ja-jp/library/ms187569.aspx

さらに調査するとレジストリの変更&Sql Serverの再起動か、実行ユーザにsysadmin権限を付与する必要があることが判明。

[FIX] SP2 以後 OPENROWSET でアドホックなアクセス不可
http://support.microsoft.com/kb/266008/ja
アドホック アクセスが拒否されました
http://d.hatena.ne.jp/mixthevibe/20070301/p1

とりあえずワンタイムな処理だったのでsysadmin権限付与して試してみたらすんなり動いたのでそれで対応完了。