Sql-Server

OPENROWSET 無法將 Excel 電子表格導入 SQL Server 2005 Express

  • December 23, 2011

我正在嘗試執行以下查詢以從 Excel 電子表格中選擇數據:

SELECT     FT_ID_SOCIETE_FF2C,FT_NOM,FT_ADR1,FT_ADR2,FT_ADR3,FT_CP,FT_VILLE,FT_TEL,FT_FAX,F10 FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\SQLFTP\LISTEFF3CFTP.xls;HDR=YES','select * from [sheet1$]');

SSMS 發送回以下錯誤:

消息 7399,級別 16,狀態 1,第 1 行連結伺服器“(null)”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”報告錯誤。提供商沒有提供有關該錯誤的任何資訊。消息 7303,級別 16,狀態 1,第 1 行無法初始化連結伺服器“(null)”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”的數據源對象。

ProcessMonitor 告訴我這個:

Date & Time: 21/11/2011 18:41:55 
Event Class: File System Operation:
CreateFile Result: NOT A DIRECTORY 
Path: D:\SQLFTP\LISTEFF3CFTP.xls
TID: 3496 
Duration: 0.0000070 
Desired Access: Execute/Traverse,Synchronize 
Disposition: Open 
Options: Directory, Synchronous IO Non-Alert 
Attributes: n/a 
ShareMode: Read, Write 
AllocationSize: n/a
Impersonating: VM-CHALEUR-FIOU\Administrator

我還安裝了 Office 2007 組件並嘗試使用 Microsoft.ACE.OLEDB.12.0 並從 SSMS 和程序監視器獲得相同的結果。

但是,我可以從同一位置導入 CSV 文件,因此這不是權限問題。

我嘗試從其他 SQL Server 2005 express 伺服器執行相同的導入並得到相同的結果。在 sp_configure 中,Ad Hoc 分佈式查詢選項設置為 1。

有人知道我在做什麼錯嗎?

好吧,我找到了解決方案,或者至少找到了兩者之一或兩者

  1. 我沒有使用網路服務帳戶執行 express,而是創建了一個普通使用者。然後,我使用 excel 電子表格將該使用者權限授予該文件夾。
  2. 我已經安裝了 AccessDatabaseEngine.exe,但我沒有重新啟動電腦。這次我重新啟動了它。

這是我使用的 OPENROWSET SELECT 語句

SELECT FT_ID_SOCIETE_FF2C,FT_NOM,FT_ADR1,FT_ADR2,FT_CP,FT_VILLE,FT_TEL,FT_FAXFROM OPENROWSET (‘Microsoft.Jet.OLEDB.4.0’,‘Excel 8.0;Database=D:\SQLFTP\LISTEFF3CFTP.xls;HDR=YES’,‘select * 從

$$ Requêtechauffage fioul$ $$’);

所以也許這是一個權限問題?很奇怪,因為我可以導入 csv 文件。也許它只是在安裝 AccessDatabaseEngine.exe 後必須重新啟動電腦。

引用自:https://dba.stackexchange.com/questions/8282