1. ホーム
  2. sql

[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。

2022-01-31 01:48:53

質問

をエクスポートしようとしています。 Table のデータを Excel を通して T-SQL のクエリを実行します。少し調べてから、次のようになりました。

INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 
                        'Excel 8.0;Database=G:\Test.xls;', 
                        'SELECT * FROM [Sheet1$]') 
SELECT * 
FROM   dbo.products 

上記のクエリを実行すると、次のようなエラーが発生します。

Msg 7302, Level 16, State 1, Line 7 Cannot create instance of OLE DB プロバイダ "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

そこで、インターネットで解決策を探したところ、以下のリンクが見つかりました。

https://blogs.msdn.microsoft.com/spike/2008/07/23/ole-db-provider-microsoft-jet-oledb-4-0-for-linked-server-null-returned-message-unspecified-error/

上記のリンク先では、管理者でないと Cドライブ TEMP フォルダ以降 OPENROWSET の中にいくつかのファイルやフォルダを作成します。 TEMP フォルダー

私は自宅のPCで、管理者である私がこれをやっています。それでも、同じエラーが発生します。

SQLサーバー 詳細

Microsoft SQL Server 2016 (RC1) - 13.0.1200.242 (X64) 2016年03月10日 16:49:45 Copyright (c) Microsoft Corporation Enterprise Evaluation Windows 10 Pro 6.3 (Build 10586: ) 上の Edition (64 ビット)

この問題を解決するためのヒントがあれば、ぜひ教えてください。

更新情報 : すでに、私が設定した Ad Hoc Distributed Queries

以下のクエリを実行

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO 

今、このエラーが発生しました

<ブロッククオート

Msg 7438, Level 16, State 1, Line 7 32-bit OLE DB provider "Microsoft.Jet.OLEDB.4.0"は、64ビットSQLではプロセス内で読み込むことができません。 サーバーを使用しています。

解決方法は?

MS Sql server 2012、Office 2013を持っています。 これは非常に細かいようなので、特定のバージョンに調整する必要があるかもしれません。

  1. Microsoft.ACE.OLEDB.12.0 for Windows, 64 bit 版はこちらからダウンロードできます。 https://www.microsoft.com/en-us/download/details.aspx?id=13255
  2. サーバーにインストールします。
  3. SQL Server を実行しているユーザーを確認し、そのユーザーがローカルサービスアカウントの場合は C:\WindowsServiceProfiles³³LocalService³³AppData³³Local³³Temp に、ネットワークサービスアカウントの場合は C:\WindowsServiceProfiles³³NetworkService³³AppData³³Local³³Temp にアクセス可能であることを確認してくださ い。
  4. Ad Hoc Distributed Queries」を設定し、以下の項目を有効にします。 Microsoft.ACE.OLEDB ファイルはこのようになります。

ここで、SP_CONFIGUREのコマンドを紹介します。

SP_CONFIGURE 'show advanced options', 1; 
GO 
RECONFIGURE; 
SP_CONFIGURE 'Ad Hoc Distributed Queries', 1; 
GO 
RECONFIGURE; 
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1   
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParam', 1

新しいものに関して SQL Server 2014 を使用する必要がありました。 'DynamicParameters' の代わりに 'DynamicParam'

EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1

このようにmsexcl40.dllを登録しておいてください。

regsvr32 C:\Windows\SysWOW64\msexcl40.dll