64位 SQL Server2008鏈接訪問Oracle 過程匯總解決方法記錄


64位 SQL Server2008鏈接訪問Oracle 過程匯總解決方法記錄

經過幾天不停的網上找資料,實驗,終於聯通了。

 

 

環境:系統:win 2008 ,SqlServer2008 R2, 連接Oracle10g

 

在SqlServer2008 R2機器上需要安裝Oracle客戶端32位和64位兩個,然后配置連接別名。設置注冊表。詳細情況見下面

 

1.錯誤1

------------------------------------------------

64位機器上建立OLE_DB鏈接報錯 

報錯內容為:    '因為ole_db訪問的'MSDAORA'配置為在單線程單元模式下運行,所以訪問的接口無法用於分布式查詢' 

 

經調查后,發給客戶如下建議解決方式:

-------------------------------------------------------------------
原因:在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的訪問接口的方法,查看-》對象資源管理器-》服務器對象-》連接服務器-》訪問接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM