现在需要两个sql 服务器上的数据互相传输、写的是存错过程建立作业让其自动执行、在执行的过程中如何用sql 判断两个服务器网络是否通呢?  sql服务器数据网络

解决方案 »

  1.   

    这个要建链接服务器:exec sp_addlinkedserver   'DB32',   '   ',   'SQLOLEDB',   '192.168.3.x\SQLEXPRESS2008R2'   
    exec sp_addlinkedsrvlogin 'DB32',   'false',null,   'sa',   'xxxxxxx'   --查询
    select   *   from   链接名称.数据库名.dbo.表名   --不用后删除
    exec   sp_dropserver     '数据库名',   'droplogins'
    --连接远程/局域网数据(openrowset/openquery/opendatasource)   
    --1、openrowset   --查询示例   
    select   *   from   openrowset(   'SQLOLEDB',   'sql服务器名   ';   '用户名';   '密码   ',数据库名.dbo.表名)   --生成本地表   
    select   *   into   表   from   openrowset(   'SQLOLEDB',   'sql服务器名';   '用户名   ';   '密码   ',数据库名.dbo.表名)   --把本地表导入远程表   
    insert   openrowset(   'SQLOLEDB',   'sql服务器名';   '用户名';   '密码   ',数据库名.dbo.表名)   
    select   *from   本地表   --更新本地表   
    update   b   
    set   b.列A=a.列A   
      from   openrowset(   'SQLOLEDB   ',   'sql服务器名   ';   '用户名   ';   '密码   ',数据库名.dbo.表名)as   a   inner   join   本地表   b   
    >exec sp_addlinkedserver @server=’别名’,@provider=’sqloledb’,@srvproduct=’’,@datasrc=’远程服务器IP’ 
    远程注册成功:(亲测) --exec sp_addlinkedserver '注册名','','SQLOLEDB','远程数据库名' 
    --exec sp_addlinkedsrvlogin '注册名','false',null,'用户名','密码' 
    --go 
      

  2.   

    --打开高级选项,允许即席查询
    EXEC SP_CONFIGURE 'show advanced options',1  
    RECONFIGURE  
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1  
    RECONFIGURE
    GODECLARE @test INTSELECT TOP(1) @test = 1
    FROM OPENDATASOURCE
    (
    'SQLOLEDB',
    'Persist Security Info=False;User ID=xx;Password=xxxxx;Initial Catalog=master;Data Source=127.0.0.1,1433'
    ).master.dbo.spt_values T--关闭选项
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
    RECONFIGURE
    EXEC SP_CONFIGURE 'show advanced options',0  
    RECONFIGUREIF (@test = 1)
    PRINT 'sucess!'
    ELSE
    PRINT 'failed'
    GO
      

  3.   

     传输应该问题、假如两个网络不通、 执行传输的时候会报错的、我是想在互相传输之前、就是像用ping网路似得、判断下网络、如果网络通就传、如果网络不通、那个数据传输的代码就不执行了。。  
      

  4.   

    好像没什么直接的方法。把测试代码放在TRY...CATCH...中,将通或不通的结果值赋给变量。再往下判断:
    DECLARE @test INTBEGIN TRY
    EXEC SP_CONFIGURE 'show advanced options',1  
    RECONFIGURE  
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1  
    RECONFIGURE SELECT TOP(1) @test = 1
    FROM OPENDATASOURCE
    (
    'SQLOLEDB',
    'Persist Security Info=False;User ID=xx;Password=xxxxx;Initial Catalog=master;Data Source=127.0.0.1,1433'
    ).master.dbo.spt_values T
     
    --关闭选项
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
    RECONFIGURE
    EXEC SP_CONFIGURE 'show advanced options',0  
    RECONFIGURE
    END TRY
    begin CATCH
    SET @test = 0
    --关闭选项
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
    RECONFIGURE
    EXEC SP_CONFIGURE 'show advanced options',0  
    RECONFIGURE
    END CATCHIF (@test = 1)
        PRINT 'sucess!'
    ELSE
        PRINT 'failed'
    GO