| 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的访问接口的方法,查看-》对象资源管理器-》服务器对象-》连接服务器-》访问接口 |