標籤:
64位 SQL Server2008連結訪問Oracle 過程匯總解決方案記錄
經過幾天不停的網上找資料,實驗,終於聯通了。
環境:系統:win 2008 ,SqlServer2008 R2, 串連Oracle10g
在SqlServer2008 R2機器上需要安裝Oracle用戶端32位和64位兩個,然後配置串連別名。設定註冊表。詳細情況見下面
1.錯誤1
------------------------------------------------
64位機器上建立OLE_DB連結報錯
報錯內容為: ‘因為ole_db訪問的‘MSDAORA‘配置為在單一執行緒 Apartment模式下運行,所以訪問的介面無法用於分散式查詢‘
經調查後,發給客戶如下建議解決方式:
-------------------------------------------------------------------
原因:在64位的SQL Engine中已經不提供MSDAORA 的驅動了,可以使用OraOLEDB.Oracle,安裝oracle 64位用戶端即可。
建議方案:
方案一:SQLServer這邊安裝64位的oracle 11g r2用戶端
2.錯誤2:
錯誤資訊:
訊息 7302,層級 16,狀態 1,過程 NC_ProcSimOutGeneral,第 18 行
無法建立連結的伺服器 "NC" 的 OLE DB 提供者 "OraOLEDB.Oracle" 的執行個體。
解決方案:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers\OraOLEDB.Oracle.1]
"AllowInProcess"=dword:00000001
如果Providers下面沒有OraOLEDB.Oracle則建立 3.錯誤3錯誤資訊:"OraOLEDB.Oracle" 返回了訊息 "ORA-12154: TNS: 無法解析指定的串連標識符 連結的伺服器"NC"的 OLE DB 提供者 "OraOLEDB.Oracle" 返回了訊息 "ORA-12154: TNS: 無法解析指定的串連標識符"。訊息 7303,層級 16,狀態 1,第 2 行無法初始化連結的伺服器 "NC" 的 OLE DB 提供者 "OraOLEDB.Oracle" 的資料來源對象。 解決方案:這種情況一般是不能識別64位用戶端的串連別名,所以需要安裝oracle client 32位用戶端。: 還需要設定註冊表
找到登錄機碼HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTCMTxOCI
OracleOciLib值改為oci.dll、
OracleSqlLib值改為orasql11.dll、
OracleXaLib值改為oraclient11.dll。
方案二:下載最新的驅動
下載一個ACE.Oledb.12.0 for X64位的驅動,並把連接字串MSDAORA 更改為 Microsoft.ACE.OLEDB.12.0
ACE.Oledb.12.0 for X64位的驅動微軟官方:
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
註:查看遠端連線的provider的提供者的方法,查看-》物件總管-》伺服器對象-》串連伺服器-》提供者
64位 SQL Server2008連結訪問Oracle 過程匯總解決方案記錄