以下是執行的sql代碼,只拿簡單讀取數據舉例,其他詳細的,請自行查看
exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 RECONFIGURE GO 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 GO SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\Users\beige\Desktop\sqltoexcel\Data.xlsx;hdr=yes;imex=1', ICD$) Go SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\Users\beige\Desktop\sqltoexcel\Data.xlsx;hdr=yes;imex=1', CMS$) GO exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure
執行報錯時,尚未注冊 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0"。
這個錯誤需要安裝AccessDatabaseEngine_X64.exe驅動,選擇相應版本下載
下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
另外,很重要的一點是:執行以上sql語句的數據庫必須是本地數據庫,
否則報錯為
鏈接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0" 報錯。提供程序未給出有關錯誤的任何信息。 消息 7303,級別 16,狀態 1,第 1 行 無法初始化鏈接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0" 的數據源對象。
下面總結解決方式:
1、在SQL Server 外圍應用配置器中啟用 OpenRowSet 和 OpenDataSource函數
2、執行以上sql語句的數據庫必須是本地數據庫,如果為遠程的數據庫就會報上面的錯誤
3、鏈接字符串 Extended Properties屬性的內容要以分號間隔並用雙引號括起來,sheet1$ 在括號外
4、注意office的版本4.0是office2003,12.0是office2007的版本,看看是否裝了驅動。
5、最為關鍵的是要看sql server 版本號,是32位的還是64位的。x64位的sql server很多的office的驅動是不支持的。
