2014-02-26 100 views
21

我想從Excel導入數據到SQL  服務器使用查詢,而不是使用嚮導。我想這個查詢:OLE DB提供程序'Microsoft.Jet.OLEDB.4.0'不能用於分佈式查詢

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

但是,我得到這個錯誤:

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.

所以我搜索谷歌,和我一樣的答案:即使重新配置之後

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

向我展示了同樣的錯誤...

+2

這可能不是一個解決辦法,但你似乎有你的連接字符串中的不匹配。對於帶'Excel 12.0'的'.xlsx'文件,你應該使用'Microsoft.ACE.OLEDB.12.0'。 'Microsoft.Jet.OLEDB.4.0'將用'Excel 8.0'指定,但只支持Excel 97-2003中的'.xls'文件。 – agentnega

+0

@agentnega我試圖將Excel文件更改爲.xls格式,之後也得到相同的錯誤 –

+0

糟糕這是一個http://stackoverflow.com/questions/16605371/error-in-query-when-trying-to- import-excel-file-to-sql?rq = 1這也是http://stackoverflow.com/questions/9687631/openrowset-with-excel-file的副本。查看這些問題以獲取可能的答案 – agentnega

回答

29

根據this thread,:

Microsoft.Jet.OLEDB.4.0 is not supported for 64-bit OS

假設你正在運行的SQL Server 64位,你可能需要64位Microsoft Access Database Engine 2010 Redistributable

並且請注意,如果已經安裝了其他版本,在嘗試安裝軟件時會有輕微的皺摺。在這種情況下,使用/passive開關從命令行安裝第二個版本。據this thread

Launching the install of a Microsoft ACE OLEDB Provider on a machine with an Office install other than the current one (e.g. 32 on 64) will cause the install to fail. To have it run properly you need to launch it from a command line with the 「/passive」 argument specified.

這是在談論現有的Office安裝,但同樣適用於共存數據庫引擎的安裝。

編輯:另外請確保提供商字符串使用「Microsoft.ACE.OLEDB.12.0」而不是「Microsoft.Jet.OLEDB.4.0」。 (道具@Rumi)

+0

您在這裏有完整和詳細的說明http://www.excel-sql-server.com/excel-import-to-sql- server-using-linked-servers.htm – Vackup

+0

這可行,但您必須將「Microsoft.Jet.OLEDB.4.0」更改爲「Microsoft.ACE.OLEDB.12.0」。也許你應該把它放在答案中。 – Rumi

-1

使用SQL象下面這樣:

SELECT * into temptable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 12.0;Database=D:\new.xlsx','select * from [sheet1$]') 
相關問題