运行这一句后
EXEC master.dbo.sp_addlinkedserver @server = N'P', @srvproduct=N'P', @provider=N'OraOLEDB.Oracle', @datasrc=N'P', @provstr=N'P'
GO再运行
SELECT * FROM P..P.TBL  报用户名/密码错再运行
EXEC 
sp_addlinkedsrvlogin  @rmtsrvname='P',@useself='false',@locallogin='sa',
@rmtuser='P',@rmtpassword='p'
后报错
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "POSP" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 报错。提供程序未给出有关错误的任何信息。
消息 7303,级别 16,状态 1,第 1 行
无法初始化链接服务器 "POSP" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的数据源对象。请教该如何处理?

解决方案 »

  1.   


    EXEC sp_addlinkedserver   @server = 'kk',   @srvproduct = 'Oracle',   @provider = 'MSDASQL.1',   @datasrc = 'test',   @provstr= 'DSN=test;UID=uid;PWD=pwd;DBQ=test' GO
    exec sp_addlinkedsrvlogin  
       @rmtsrvname='别名',
       @useself='false',
       @locallogin='sa',
       @rmtuser='uid',
       @rmtpasswor
      

  2.   

    上面是建立的语句。但是前提是你在sqlserver的机器上已经安装了oracle的客户端,而且已经配置了tnsname。一定先要保证能够tnsping通远端oracle服务器。
      

  3.   

    1、在SQL Server服务器上安装相应版本的Oracle客户端驱动,因为SQL Server默认提供的Oracle驱动不一定与你正在用的Oracle版本相同。
    2、配置TNS和服务名。
    3、可以先通过建立ODBC测试一下能不能访问Oracle服务器。
      

  4.   

    1 有Oracle客户端驱动,10.2 for x64 windows,oracle服务器版本是9.2.0.1,AIX
    2 tnsping可以ping通
    3 odbc测试已经通过
      

  5.   

    运行这一句后
    EXEC master.dbo.sp_addlinkedserver @server = N'P', @srvproduct=N'P', @provider=N'OraOLEDB.Oracle', @datasrc=N'P', @provstr=N'P'
    GO再运行
    SELECT * FROM P..P.TBL  报用户名/密码错再运行
    EXEC 
    sp_addlinkedsrvlogin  @rmtsrvname='P',@useself='false',@locallogin='sa',
    @rmtuser='P',@rmtpassword='p'再运行
    SELECT * FROM P..P.TBL  后报错消息 7399,级别 16,状态 1,第 1 行
    链接服务器 "P" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 报错。提供程序未给出有关错误的任何信息。
    消息 7303,级别 16,状态 1,第 1 行
    无法初始化链接服务器 "P" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的数据源对象。请教该如何处理?
      

  6.   

    你用我给你的sql拭一下。主要是换一下你的驱动。