T-SQL
クエリを使用して、Table
データからExcel
にエクスポートしようとしています。少し研究した後、私はこれを思いついた
INSERT INTO OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=G:\Test.xls;',
'SELECT * FROM [Sheet1$]')
SELECT *
FROM dbo.products
上記のクエリを実行すると、このエラーが発生します
メッセージ7302、レベル16、状態1、行7リンクサーバー "(null)"のOLE DBプロバイダー "Microsoft.Jet.OLEDB.4.0"のインスタンスを作成できません。
だから解決策のためにインターネットを通過し、以下のリンクを得た
上記のリンクでは、TEMP
がOPENROWSET
フォルダー内にいくつかのファイルまたはフォルダーを作成するため、CドライブTEMP
フォルダーにフォルダーを作成するには管理者である必要があると言っていました
私はこれをMy Home PCで行っており、管理者です。それでも同じエラーが発生します。
SQL SERVER詳細
Microsoft SQL Server 2016(RC1)-13.0.1200.242(X64)2016年3月10日16:49:45 Copyright(c)Microsoft Corporation Enterprise Evaluation Edition(64-bit)on Windows 10 Pro 6.3(ビルド10586:)
問題を解決するためのポインタは高く評価されます
更新:すでに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
今、このエラーが発生しています
メッセージ7438、レベル16、状態1、行7 32ビットOLE DBプロバイダー「Microsoft.Jet.OLEDB.4.0」は、64ビットSQL Serverでインプロセスでロードできません。
わかりました、私はそれを私のために働かせました、そして、SOは今日私に投稿させてくれるようです。
MS SQL Server 2012とOffice 2013があります。これは非常に細心の注意が必要なようです。そのため、特定のバージョンに調整する必要があります。
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
Sp_configure/RECONFIGUREを確認してください...
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
詳細については、次のリンクを参照してください。
https://technet.Microsoft.com/en-us/library/aa259616(v = sql.80).aspx
動作します!!!まことにありがとうございます。 64ビットWinサーバー2012R2専用。作業スクリプト全体を、(私にとっては)一緒に結合するのが容易ではない、上からの部分的に繰り返される部分を繰り返してみましょう。
1)Windows用のMicrosoft.ACE.OLEDB.12.0をダウンロードします。64ビットバージョンは次の場所にあります。 https://www.Microsoft.com/en-us/download/details.aspx?id=13255
2)それぞれの列(この場合は名前とクラス)でExcelファイルを作成します。
3)以下のコードを実行します。
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
/* -- Not sure commented bits are necessary but I also have run them
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
-- below two lines failed with: Msg 2787, Level 16, State 1, Procedure sp_MSset_oledb_prop, Line 106 Invalid format specification: '%1!.'.
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
-- but works all two as below:
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'DynamicParameters', 1
-- Succeded to run after success with Excel so does not looks like necessary
*/
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 8.0;Database=C:\testing.xlsx;',
'SELECT Name, Class FROM [Sheet1$]')
SELECT [Name],[Class] FROM Qry_2
GO