8

SSMS で Excel ファイルにアクセスしようとしています。インターネットを検索した後、私はそれを機能させることができませんでした。
これが私がしたことです:

私の環境:

Windows 7(64bit) SP 1, 
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64)   
Office 2010 Pro Plus with Access installed(32 bit)
  1. 次のように OLE の設定を変更してみてください。

    exec sp_configure 'Advanced', 1
    RECONFIGURE
    
    exec sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1  
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    
  2. クエリを実行:

    SELECT * FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')
    

    また

    SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')
    

どちらの場合も、次のようなエラー メッセージが表示されました。

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'MICROSOFT.JET.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

また

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'MICROSOFT.ACE.OLEDB.12.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

次に、SQL サーバー上のリンク サーバーを確認したところ、実行システム sp によって既定で 10 のプロバイダーが存在します。

EXEC master.dbo.sp_MSset_oledb_prop 

SQLOLEDB
MSOLAP
SQLNCLI11
ADsDSOObject
SQLNCLI
SQLNCLI10
Search.CollatorDSO
MSDASQL
MSDAOSP
MSIDXS

この問題を解決するにはどうすればよいですか? SQL Server で使用できるかどうか、または使用できるかどうかを確認するにはどうすればMICROSOFT.ACE.OLEDB.12.0よいですか?MICROSOFT.JET.OLEDB.4.0

4

1 に答える 1

4

拡張子が .xlsx のファイル タイプの場合、Excel 9.0 の代わりに「Excel 12.0」または「Excel 12.0 Xml」を使用します

SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Temp\Test.xlsx;', 'SELECT * FROM [Location1$]')

Microsoft Office Excel データに接続している場合は、Excel ファイルの種類に基づいて、OLEDB 接続文字列の適切な拡張プロパティを追加します。

File Type (extension)                               Extended Properties
---------------------------------------------------------------------------------
Excel 97-2003 Workbook (.xls)                       "Excel 8.0"
Excel 2007-2010 Workbook (.xlsx)                    "Excel 12.0 Xml"
Excel 2007-2010 Macro-enabled workbook (.xlsm)      "Excel 12.0 Macro"
Excel 2007-2010 Non-XML binary workbook (.xlsb)     "Excel 12.0"
于 2013-03-20T14:17:17.523 に答える