64位環境中使用SQL查詢excel的方式解決

 

--64位環境中使用SQL查詢excel的方式

環境:

OSWindows Server 2008 R2 Enterprise

MSSQL:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)  (Build 7601: Service Pack 1)

 

查詢access的方式,請移步:MSSQL中對ACCESS文件操作方式彙總

 

 

因爲SQL2005默認是沒有開啓'Ad Hoc Distributed Queries' 組件,開啓方法如下

 

--使用sa登錄數據庫

EXEC sp_configure 'show advanced options', 1  --更改配置

GO

RECONFIGURE       --安裝

GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1

GO

RECONFIGURE

GO

--查詢配置值

select value,value_in_use,name

from sys.configurations

where name ='Ad Hoc Distributed Queries'

 

 

一、案情:執行Microsoft.Jet.OLEDB.4.0查詢excel報錯。

代碼:

select *

 FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',  

'Data Source=C:/Book1.xlsx;

User ID=Admin;Password=;Extended Properties=Excel 8.0;')...a$ 

 

--result:

/*

消息7308,級別16,狀態1,第1

因爲OLE DB 訪問接口'Microsoft.Jet.OLEDB.4.0' 配置爲在單線程單元模式下運行,所以該訪問接口無法用於分佈式查詢。

 

*/

 

二、緣由:

--默認情況下,Microsoft OLE DB Provider for Jet Jet ODBC 驅動程序只能在爲環境下運行,無法運行在位模式下。

 

三、處理:

--下載並安裝Office System Driver Beta 64位驅動

英文地址

中文地址

 

注意:如果本機已安裝位的office組件,則要先進行卸載,再安裝位的MADE2010

 

在安裝AccessDatabaseEngine_X64.exe之後更換Microsoft.ACE.OLEDB驅動查詢:

 代碼:

select @@VERSION,*

 FROM OpenDataSource('Microsoft.ACE.OLEDB.12.0',  

'Data Source=C:/Book1.xlsx;

User ID=Admin;Password=;Extended Properties=Excel 12.0;')...a$ 

 

--結果如圖所示:

 

 

——>總結:找對問題是關鍵,比如這裏的MADE2010驅動。

 

 

Posted by: select left('claro',2) @15:00:33

lable: SQL,windows

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章