SQL Server 2008 x64
SQL Server 2008 R2 x64
在 x64 位元的 SQL Server 2008 版本上,若要存取 Excel 或是 Access 的資料,這可能會遭到問題,因為:
Microsoft.Jet.OLEDB.4.0 目前沒有 x64 位元版本。
變通的作法是:
在 x64 位元作業系統 + SQL Server 2008 x64 位元,可以安裝 x64 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」。
在安裝 x64 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」後,執行 OPENROWSET 與 OPENDATASOURCE 函數時,就可以利用此驅動程式來連線以下的檔案類型,例如:
(1) Excel 的:*.xls、*.xlsx。
(2) Access 的:*.mdb、*.accdb。
根據測試,若環境是:
在 x64 位元作業系統+ SQL Server 2008 x64 位元上,安裝 32 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」。
執行 OPENROWSET 與 OPENDATASOURCE 函數上,仍是無法正常使用。
以下為在 x64 位元作業系統+ SQL Server 2008 x64 位元,但並未安裝 x64 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」環境上。
使用 OPENROWSET 與 OPENDATASOURCE 函數所遭遇的錯誤訊息:
--01 在 SQL Server 2008 x64 位元上,使用 Microsoft.Jet.OLEDB.4.0 驅動程式
--EX1. 使用 Microsoft OLE DB Provider for Jet SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\myAdmin\OtherSource\北風貿易01.mdb';'admin';'',客戶); GO /* 錯誤訊息 訊息 7308,層級 16,狀態 1,行 1 OLE DB 提供者 'Microsoft.Jet.OLEDB.4.0' 不能用來散佈查詢,因為提供者是設定成以單一執行緒 Apartment 模式執行。 Msg 7308,Level 16,State 1,Line 2 OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode. */
--02 與 03 在 SQL Server 2008 x64 位元上,尚未安裝 x64 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」。
--EX2. 使用 Microsoft.ACE.OLEDB.12.0,連接到 *.accdb SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','C:\myAdmin\OtherSource\NW2010tw.accdb';'admin';'',客戶); GO /* 錯誤訊息 沒有安裝 x64 位元版本時的錯誤: 訊息 7302,層級 16,狀態 1,行 1 無法建立連結伺服器 "(null)" 的 OLE DB 提供者 "Microsoft.ACE.OLEDB.12.0" 的執行個體。 Msg 7302,Level 16,State 1,Line 1 Cannot create an instance of OLE DB provider Microsoft.ACE.OLEDB.12.0 for linked server (null). Msg 7415,Level 16,State 1,Line 2 Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server. */
雖然已經安裝了 32 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」,但仍是無法使用。
也就是說:
(1) 32 位元版本的 SQL Server 是對應到 32 位元版本的驅動程式。
(2) x64 位元版本的 SQL Server 是對應到 x64 位元版本的驅動程式。
在 x64 位元作業系統 + SQL Server 2008 x64 位元,可以安裝 x64 位元版本的 「Microsoft Access Database Engine 2010 可轉散發套件」。
請到以下的網址下載:
Microsoft Access Database Engine 2010 可轉散發套件
http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displayLang=zh-tw
--04 下載Access Database Engine 2010 可轉散發套件
參考資料
認識 OPENROWSET 與 OPENDATASOURCE 函數;以 SQL Server 2008 R2 x64 位元平台為例
http://sharedderrick.blogspot.com/2011/08/openrowset-opendatasource-sql-server.html
啟用 Ad Hoc Distributed Queries。訊息 15281,SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。
http://sharedderrick.blogspot.com/2011/02/sql-server-2008-surface-area.html
Microsoft Access Database Engine 2010 可轉散發套件
http://www.microsoft.com/downloads/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D&displayLang=zh-tw
沒有留言:
張貼留言