web-dev-qa-db-ja.com

OLE DBプロバイダー 'Microsoft.Jet.OLEDB.4.0'は分散クエリに使用できません

ウィザードではなくクエリを使用して、ExcelからSQL ExcelServerにデータをインポートしたい。私はこのクエリを試しました:

Select * INTO g FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 12.0;Database=D:\new.xlsx;HDR=YES', 'SELECT * FROM [newSheet$]');

しかし、私はこのエラーを受け取っています:

メッセージ7308、レベル16、状態1、行1
OLE DBプロバイダー 'Microsoft.Jet.OLEDB.4.0'は、シングルスレッドアパートメントモードで実行するように構成されているため、分散クエリに使用できません。

そこで、Googleで検索したところ、次のような答えが得られました。

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

再構成しても同じエラーが表示されます...

22

このスレッド によると、:

Microsoft.Jet.OLEDB.4.0は64ビットOSではサポートされていません

64ビットのSQL Serverを実行していると仮定すると、おそらく64ビットが必要です Microsoft Accessデータベースエンジン2010再頒布可能.

また、他のバージョンがすでにインストールされている場合、ソフトウェアをインストールしようとすると、小さなしわがあることに注意してください。この場合、/ passiveスイッチを使用してコマンドラインから2番目のバージョンをインストールします。 このスレッド によると:

現在のインストール(例:32 on 64)以外のOfficeがインストールされているコンピューターでMicrosoft ACE OLEDBプロバイダーのインストールを開始すると、インストールが失敗します。適切に実行するには、“/passive”引数を指定してコマンドラインから起動する必要があります。

これは、既存のOfficeインストールのことですが、共存するデータベースエンジンのインストールにも同じことが言えます。

編集:また、プロバイダー文字列には「Microsoft.Jet.OLEDB.4.0」ではなく「Microsoft.ACE.OLEDB.12.0」を使用してください。 (@Rumiの小道具)

30
agentnega