ウィザードではなくクエリを使用して、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
再構成しても同じエラーが表示されます...
このスレッド によると、:
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の小道具)