近日安裝了SQL Server Express SP3,嘗試用以下代碼導入Excel 2003格式文件。
select * from OpenRowSet
('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\test.xls','select * from [sheet1$]')
出現以下錯誤(其他錯誤按照提示操作即可):
消息 7399,級別 16,狀態 1,第 1 行
鏈接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0" 報錯。訪問被拒絕。
消息 7301,級別 16,狀態 2,第 1 行
無法從鏈接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0" 獲取所需的接口("IID_IDBCreateCommand")。
或者類似錯誤信息,比如找不到列等等,都是“訪問被拒絕”原因造成的。看起來有點像引擎的訪問權限不夠。
http://wandejun1012.iteye.com/blog/1571118 中提到:
將SQL Server(MSSQLSERVER)和SQL Full-Filter Deamon Launcher(MSSQLSERVER)兩個服務的登錄身份改為LocalSystem
安裝的時候默認是network service。不過本人覺得這樣修改治標不治本,而且有安全隱患。
http://topic.csdn.net/u/20090602/17/2b46432b-7770-4444-982c-b81d442f34b9.html
這上面有關於這方面的討論,也有其他解決方法。上面37樓指出的方法多人反饋可行:
發現根本原因了:management studio--->服務器對象-->鏈接服務器-->Microsoft.Jet.OLEDB.4.0-->右鍵屬性-->訪問接口選項:全都不選
今天我安裝SQL Server Express SP4解決問題。估計是SP3與Excel 2007引擎的兼容性不是那么好,SP4就解決了這個問題。而通過右鍵我的電腦-管理-服務,查看SQL SERVER的服務運行賬戶,仍然是network service。
--補充:后來在另外一台電腦上(Windows XP SP3)安裝又不行。
112213303312