Sql Serverで「プロバイダーはローカルコンピュータに登録されていません」が出る
2013年07月11日 16時33分
Sql ServerへaccessやExcelからデータを登録する必要があったので以下のようなQuery書いたらすんなりいかなかったのでメモ。
1 2 3 4 5 6 7 8 |
INSERT INTO テーブル名 SELECT * FROM OPENDATASOURCE( 'Microsoft.ACE.OLEDB.12.0' ,'DATA Source="mdbファイルへのパス";' )...[mdbのテーブル名] |
エラーメッセージ「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で設定変更してもそれだけだと駄目だった。
123456 EXEC sp_configure 'show advanced options', 1RECONFIGUREGOEXEC sp_configure 'ad hoc distributed queries', 1RECONFIGUREGO
- 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権限付与して試してみたらすんなり動いたのでそれで対応完了。