簡體   English   中英

將Excel工作表導入SQL Server獲取錯誤“OLE DB提供程序”Microsoft.ACE.OLEDB.12.0“用於鏈接服務器”(null)“”

[英]Import Excel Sheet into SQL Server Getting Error “The OLE DB provider “Microsoft.ACE.OLEDB.12.0” for linked server “(null)””

當我實現此代碼( Excel Sheet到Sql Server )時出現此錯誤。

無法為鏈接服務器“(null)”初始化OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”的數據源對象。 OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”用於鏈接服務器“(null)”返回消息“未指定的錯誤”。

我完成了以下所有事情,

  • sp_configure'show advanced options',1
  • 重新配置
  • sp_configure'Ad Hoc Distributed Queries',1
  • 重新配置

還安裝2010 Office System驅動程序:數據連接組件

然后也是同樣的問題。

由於訪問潛水員和SQL服務器之間不兼容,我遇到了同樣的問題。 我甚至無法更改系統的權限。 以下是適合我的解決方案:

前提:

  • 安裝的Office產品是32位版本。
  • O / S是64位。
  • 安裝的SQL Server是64位版本。

問題:

  • 無法執行以下查詢:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0; HDR = YES; Database = C:\\ temp \\ Book.xlsx','select * from [Sheet1 $]')

  • 將顯示以下錯誤:
  OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Could not find installable ISAM.". Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)". 
  • 這是因為64位MS Access驅動程序(Microsoft.ACE.OLEDB.xx.x)無法讀取32位Excel文件。

解:

  1. 在命令提示符下以被動模式安裝32位MS Access驅動器,如下所示:

access_drive_path> access_dirve_name.exe / passive

E.g.        C:\Users\user_name\Downloads>AccessDatabaseEngine.exe /passive
  1. 安裝32位SQL Server(EXPRESS版本,因為它是免費的)。

  2. 通過執行以下查詢啟用Ad Hoc Distributed查詢和動態參數等:

 EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO EXEC sp_configure 'ad hoc distributed queries', 1 RECONFIGURE GO USE [master] 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 
  1. 現在嘗試在SQL查詢中讀取Excel文件:)

還有一件事....確保您正在嘗試讀取的文件未打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM