OPENROWSET 無法將 Excel 電子表格導入 SQL Server 2005 Express
我正在嘗試執行以下查詢以從 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。
有人知道我在做什麼錯嗎?
好吧,我找到了解決方案,或者至少找到了兩者之一或兩者
- 我沒有使用網路服務帳戶執行 express,而是創建了一個普通使用者。然後,我使用 excel 電子表格將該使用者權限授予該文件夾。
- 我已經安裝了 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 後必須重新啟動電腦。