none
查询远程SQL服务器出错; RRS feed

  • 问题

  •   exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'   
      exec   sp_serveroption   N'hooyesRemoteDB',   N'rpc out',   N'true'     
      exec   sp_serveroption   N'hooyesRemoteDB',   N'rpc',   N'true'   
      exec   sp_addlinkedsrvlogin   'hooyesRemoteDB','False',null,'sa','hooyes' 
      --// 192.168.0.218 有数据库TestDB 和其中的表tb2
      select * from hooyesRemoteDB.TestDB.dbo.tb2
      /*
       执行以上操作 报以下错误:
       链接服务器"hooyesRemoteDB"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期"。
    链接服务器"hooyesRemoteDB"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "建立到服务器的连接时发生错误。连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。"。
    消息 53,级别 16,状态 1,第 0 行
    命名管道提供程序: 无法打开与 SQL Server 的连接 [53]. 
    链接服务器"hooyesRemoteDB"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "无效的连接字符串属性"。
    
      */
     /*
      192.168.0.218 服务器 已经开启了充许远程连接;开启了1433端口;开启TCP/IP连接;
      
      为何出现如此错误呢?
    
     */
    

     

    2009年3月30日 6:43

答案

  • 如果你按照原来的语句创建:
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  


    执行select  data_source from sys.servers后的结果应该是
    hooyesRemoteDB, 而不是你上面的192.168.0.218




    stswordman
         现在查的结果是: 192.168.0.218
         应该是正确的还是错误的呢? 
         依然出现错误. 
         stswordman 您觉得还有哪个地方没有设置正确吗?
    Which port does sql listening on? Try add port number after ip address like: 192.168.0.218,nnnn and ensure that port is open on your network.
    2009年3月30日 18:09
  • 參照方法:
    http://topic.csdn.net/u/20080612/22/bb2dfa83-1cf3-4a0b-9bd4-5a39e6193556.html

    檢查連接的賬號是否啟用,登陸模式是否為混合
    吳熹
    2009年4月1日 2:36
    版主

全部回复

  • 这应该是你本机命名管道的问题:
    用下面的操作试试:
    开始---程序---SQL SERVER 2005----配置工具------SQL Server 配置管理器
    打开:服务和连接的外围应用配置器---找到远程连接----选中本地连接和远程访问
    选中TCP/IP
    • 已建议为答案 Liu Zhi 2009年3月30日 6:56
    2009年3月30日 6:55
  • 这应该是你本机命名管道的问题:
    用下面的操作试试:
    开始---程序---SQL SERVER 2005----配置工具------SQL Server 配置管理器
    打开:服务和连接的外围应用配置器---找到远程连接----选中本地连接和远程访问
    选中TCP/IP

        已经开启了;问题依然;
    2009年3月30日 6:57
  • 先通过SSMS来进行链接服务器的定义。如果能成功,再用命令方式定义链接服务器。应当能查出原因!

    2009年3月30日 7:42


  • 如果你的目标机器已经允许远程访问,
    那检查你的数据源是否输入正确,就是@DataSrc那个参数,
    也就是你代码的第四个参数
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB(就是这个)',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  

    这个是指你要连接的数据源,
    执行以下语句
    select *from sys.servers
    查看你创建的linkedserver的data_source是否是数据源。 我看到你的linkedserver的名称和数据源是相同的,都是hooyesRemoteDB...

    那个192.168.9.218又是什么呢? 是不是这个ip地址才是数据源? 如果是的话替换过去,如果数据源是命名实例,需要将实例名也加上去
    stswordman
    2009年3月30日 8:01
    版主


  • 如果你的目标机器已经允许远程访问,
    那检查你的数据源是否输入正确,就是@DataSrc那个参数,
    也就是你代码的第四个参数
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB(就是这个)',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  

    这个是指你要连接的数据源,
    执行以下语句
    select *from sys.servers
    
    
    查看你创建的linkedserver的data_source是否是数据源。 我看到你的linkedserver的名称和数据源是相同的,都是hooyesRemoteDB...

    那个192.168.9.218又是什么呢? 是不是这个ip地址才是数据源? 如果是的话替换过去,如果数据源是命名实例,需要将实例名也加上去
    stswordman
         执行:
        select *from sys.servers
        结果为:
        server_id     name                            data_source
        1                hooyesRemoteDB           192.168.0.218

       有什么异常吗?
      
        
    2009年3月30日 8:31
  • 如果你按照原来的语句创建:
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  


    执行select  data_source from sys.servers后的结果应该是
    hooyesRemoteDB, 而不是你上面的192.168.0.218




    stswordman
    2009年3月30日 8:44
    版主
  • 如果你按照原来的语句创建:
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  


    执行select  data_source from sys.servers后的结果应该是
    hooyesRemoteDB, 而不是你上面的192.168.0.218




    stswordman
         现在查的结果是: 192.168.0.218
         应该是正确的还是错误的呢? 
         依然出现错误. 
         stswordman 您觉得还有哪个地方没有设置正确吗?
    2009年3月30日 9:00
  • 你通过其它方式可以连接目标数据库吗?我觉得不是linkedserver的问题
    例如ssms或sqlcmd.

    另外,你的@provstr 参数不正确,设置为null即可。
    sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','192.168.0.218'


    stswordman
    2009年3月30日 10:20
    版主
  • 如果你按照原来的语句创建:
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  


    执行select  data_source from sys.servers后的结果应该是
    hooyesRemoteDB, 而不是你上面的192.168.0.218




    stswordman
         现在查的结果是: 192.168.0.218
         应该是正确的还是错误的呢? 
         依然出现错误. 
         stswordman 您觉得还有哪个地方没有设置正确吗?
    Which port does sql listening on? Try add port number after ip address like: 192.168.0.218,nnnn and ensure that port is open on your network.
    2009年3月30日 18:09
  • 如果你按照原来的语句创建:
    exec   sp_addlinkedserver   'hooyesRemoteDB','','SQLOLEDB','hooyesRemoteDB',null,
      'driver={SQL Server};server=192.168.0.218;uid=sa;pwd=hooyes;'  


    执行select  data_source from sys.servers后的结果应该是
    hooyesRemoteDB, 而不是你上面的192.168.0.218




    stswordman
         现在查的结果是: 192.168.0.218
         应该是正确的还是错误的呢? 
         依然出现错误. 
         stswordman 您觉得还有哪个地方没有设置正确吗?
    Which port does sql listening on? Try add port number after ip address like: 192.168.0.218,nnnn and ensure that port is open on your network.
         1433 端口,已开
         要这样写? 192.168.0.218,1433 ?  
    2009年3月30日 23:49
  • Yes, and you can test it with this commad in dos: telnet 192.168.0.218 1433
    2009年3月31日 13:21
  • 參照方法:
    http://topic.csdn.net/u/20080612/22/bb2dfa83-1cf3-4a0b-9bd4-5a39e6193556.html

    檢查連接的賬號是否啟用,登陸模式是否為混合
    吳熹
    2009年4月1日 2:36
    版主