sp_addlinkedserver创建好了远程连接之后
如果目的服务器断网后,用什么方法可以怎么判断连接不成功呢?
select * from   master..sysservers where srvname='目的服务器'
会找不到这个连接了吗?我想应该不会吧?只是由于断网连接不上?

解决方案 »

  1.   

    是否可以考虑在对远程服务器操作后给一个回复,然后根据回复判断操作是否成功.比如说操作完成后检查一下@@ROWCOUNT 的值.
      

  2.   

    sysservers(sys.servers)以及 sp_helpserver都是查询配置,不能作为判断链路是否有效的依据。1、断网后,链接服务器查询返回错误。2、调用PING 目标服务器地址,根据返回值做判断。
      

  3.   

    参考xp_cmdshell
    /*--开启xp_cmdshell
    EXEC sp_configure 'show advanced options', 1
    GO
    RECONFIGURE
    GO
    EXEC sp_configure 'xp_cmdshell', 1
    GO
    RECONFIGURE
    GO
    */
    declare @a table  ( a varchar ( 200))
    insert into @a
    EXEC xp_cmdshell 'ping 100.0.0.0'
    if exists (
    select * 
    from @a
    where a like '%请求超时%' )
    print '链接请求失败'
    --result:
    链接请求失败
      

  4.   

    xp_cmdshell开启是不是很危险哇?容易被入侵?
      

  5.   


    那我判断是否断网时开起xp_cmdshell,完事之后关闭xp_cmdshell,你觉得会不会好点?
      

  6.   

    sp_testlinkedserver测试与链接服务器的连接。 
      

  7.   

    必须要在SQL中完成吗?如果是,可以考虑9F。不过链接服务器配置要规范。
      

  8.   


    嗯,一定要在SQL中完成,要么不用这么纠结了,呵
      

  9.   

    了解。xp_cmdshell是灵活的方式,不受链接服务器的限制。
      

  10.   


    请问sp_testlinkedserver的用法
    我在master库中的系统存储工程中木有找到额- -
    我自己试了下,sp_testlinkedserver +srv_name
    如果存在并且通的是直接执行成功,无任何返回;不存在是报错,无返回;不通呢?也是报错么?
    是不是要这样判断?
    如下:
    BEGIN TRY  
            exec('sp_testlinkedserver '+@IP)
            Set @Status='pass'
            Return
        END TRY
        BEGIN CATCH
            Set @Status='fail'
            Return
        END CATCH
      

  11.   

    呵呵,谢谢
    求sp_testlinkedserver用法~~~
      

  12.   

    在MSDB中。
    declare @srvr nvarchar(128), @retval int;
    set @srvr = '10.0.0.0';
    begin try
        exec @retval = sys.sp_testlinkedserver @srvr;
    end try
    begin catch
        set @retval = sign(@@error);
    end catch;
    if @retval <> 0
      raiserror('Unable to connect to server. This operation will be tried later!', 16, 2 );
      

  13.   


    谢谢,方法我知道了
    但是MSDB中也没有sp_testlinkedserver
      

  14.   

    sp_testlinkedserver 在2005数据库MSDB,2000中没有!