本帖最后由 z315559822 于 2012-10-16 10:06:47 编辑

解决方案 »

  1.   

    select * from openrowset( 'SQLOLEDB ', '用友 '; 'sa '; 'pw2',UFDATA_808_2012.dbo.Inventory) 看提示什么错误
      

  2.   


    消息 17,级别 16,状态 1,第 1 行
    [DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。查询分析器连接到 【用友】的 返回成功,另外查询分析题返回上面消息
      

  3.   

    单独的使用OPENDATASOURCE 你能连上那个?
    用友的还是生产的?
    你本机是05还是2000
      

  4.   


    单独使用OPENDATASOURCE,也是首先要登录对应的数据库查询分析器,然后执行对应的的OPENDATASOURCE,可以成功,交换就不能成功,或放在一个查询分析器里面也不能成功
      

  5.   

      
           use master
             select srvid,srvname,datasource from sysservers 
    -----------------------------------------------------------
    srvid srvname datasource
    1 M5002 D:\study\ASPNET\LUCKJADE\LuckJade.mdb
    2 090220 F:\e\data\090220.mdb
    3 ITSV  XYINGSCXT
    4 srv_lnk C900
      

  6.   

    你这样做失去了意义不应该是登录到对应的查询分析器执行OPENDATASOURCE而是在你自己的电脑上使用OPENDATASOURCE去单独访问 【用友】和【生产系统】看是否都畅通
      

  7.   


    就是需要在客户端电脑上使用OPENDATASOURCE去同时访问 【用友】和【生产系统】不成功啊,上面说单独访问成功,仅仅是为了排除单独语句的错误。
      

  8.   

    在客户端电脑上单独使用OPENDATASOURCE访问 【用友】或【生产系统】
    不要远程连接之后在访问
    这样看是否成功
      

  9.   

    http://sokoo.cnblogs.com/archive/2005/10/28/263673.aspx
      

  10.   

    呵呵 ,终于测试通过:Select top 1 * From OPENDATASOURCE('SQLOLEDB','Data Source=xyingsc01;User ID=1981;Password=852').ld.dbo.cpbm a
    Left Join 
    OPENDATASOURCE('SQLOLEDB','Data Source=10.20.1.99;User ID=sa;Password=x3500').UFDATA_808_2012.dbo.Inventory b
    On a.产品编码 =b.cInvAddCode
    select top 1 * from openrowset( 'SQLOLEDB', 'xyingsc01'; '1981'; '852',ld.dbo.cpbm)a  
    left join           
    openrowset( 'SQLOLEDB', '10.20.1.99'; 'sa'; 'x3500',UFDATA_808_2012.dbo.Inventory)b
     On a.产品编码 = b.cInvAddCode
    一定要到第三个方数据库连接的查询分析器里面执行,在语句里面涉及的任何一方查询分析器里面执行都报连接不到。