1.Microsoft.ACE.OLEDB.12.0 簡介數據庫
就是一個數據訪問接口,用於在office文件和非office應用程序間傳輸數據。例如 Microsoft Office Access 2010(*.mdb和 *.accdb)文件和Microsoft Office Excel 2010(*.xls、*.xlsx和 *.xlsb)文件)與其餘數據源(例如 Microsoft SQL Server)之間傳輸數據。安全
2.Microsoft.ACE.OLEDB.12.0 在 MSSQL中的應用服務器
1) 查看是否已經安裝此接口分佈式
進入SSMS後,在對象資源管理器中,位次展開「服務器對象」--- 「連接服務器」---「訪問接口」,若是在訪問接口下面找到了Microsoft.ACE.OLEDB.12.0(以下圖),則說明已經安裝此接口。也有可能版本號不是12.0,此版本是對應Office 2010的。通常狀況下,若是安裝了Office,此接口會跟着一塊兒被安裝。工具
2) 安裝接口代理
若是沒能找到此接口,說明系統沒有安裝Office或者所安裝版本(32bit或64bit)與SQL Server版本不一致。能夠有以下解決方案:對象
a) 若Office與MSSQL位數不一致,從新安裝與SQL Server位數相同的Office,同爲32bit或64bit;blog
b) 若不許備安裝Office,能夠單獨安裝Microsoft.ACE.OLEDB.12.0:32bit下載 或64bit下載。接口
若安裝時出現點擊後閃退,能夠先用WINRAR將exe安裝包解壓,再運行裏面的setup資源
3)使用接口讀取Excel文件示例
讀取D盤目錄下的Test.xlsx文件Sheet1中的內容
SELECT ID,Content FROM
OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=Yes;IMEX=1;Database=D:\Test.xlsx')... [sheet1$]
3.常見問題
1)
消息 7403......還沒有註冊 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0"。
緣由:當前所連數據庫所在服務器,未安裝此接口。
解決方案:參見上面第2點。
2)
消息 15281……SQL Server 阻止了對組件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的訪問,由於此組件已做爲此服務器安全配置的一部分而被關閉
可能緣由:未開啓 Ad Hoc Distributed Queries(即席分佈式查詢)
參考解決方案:用代碼開啓 Ad Hoc Distributed Queries
sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ad Hoc Distributed Queries', 1; GO RECONFIGURE; GO
3)
消息 7399……連接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0" 報錯。訪問被拒絕。
消息 7301……沒法從連接服務器 "(null)" 的 OLE DB 訪問接口 "Microsoft.ACE.OLEDB.12.0" 獲取所需的界面("IID_IDBCreateCommand")。
消息 7302……沒法建立連接服務器 "(null)" 的 OLE DB 訪問接口 "MSDASC" 的實例
可能緣由:SQL Server(MSSQLSERVER) 的登錄身份不合適
參考解決方案:將相關服務的登錄身份改成 local system
操做方法:
運行 services.msc,找到SQL Server(MSSQLSERVER),右鍵屬性,登錄相關選項卡,本地系統賬戶。
或
開始---全部程序---MicrosoftSQL Server 2008 R2(或其餘版本)---配置工具---SQLServer 配置管理器,找到SQL Server(MSSQLSERVER) ,右鍵屬性,登錄選項卡,內置賬戶改成Local system。
最後,若在MSSQL JOB中也要用到此接口,則SQL Server代理(MSSQLSERVER)這個服務也要作相同修改。
4)
返回了消息 "Microsoft Access 數據庫引擎沒法打開文件「」或向其寫入數據。它已經被其餘用戶以獨佔方式打開,或者您沒有查看和寫入其數據的權限
文檔已被本地帳號打開,關閉便可,若是要打開時也能夠訪問,請用Windows身份驗證方式登錄。