1、打开本地的Sql Sever的MSDTC服务
2、拔号到远程服务器(modem 对 modem)
3、在本地添加远程服务器:
exec sp_addlinkedserver  @server =  '192.168.2.44'
exec sp_addlinkedsrvlogin @rmtsrvname =  '192.168.2.44',
     @useself =  false ,
     @locallogin = 'sa',  
     @rmtuser =  'sa' ,
     @rmtpassword =  null
4、直接用Sql语句传输数据
select * from [192.168.2.44].zlsgl.dbo.t_cby  update [192.168.2.44].zlsgl.dbo.t_cby set xm = rtrim(xm) + '1' where bh = 4
5、完成后关闭连接:
sp_droplinkedsrvlogin  @rmtsrvname = '192.168.2.44', @locallogin = 'sa'
sp_dropserver  @server =  '192.168.2.44'

解决方案 »

  1.   

    可以在客户端生成对数据修改的sql语句,然后传输到服务器执行之。
    比如生成insert,delete,update语句,然后在服务器上执行!
      

  2.   

    可以:
    1。用导入导出功能;
    2。用发布和定制;
    3。用备份和恢复;
    4。传数据库MDF文件,再进行连接。
      

  3.   

    可以:
    1。用导入导出功能;
    2。用发布和定制;
    3。用备份和恢复;
    4。传数据库MDF文件,再进行连接。
      

  4.   

    我说的是三层的方式,是应用服务器接收sql语句,然后在对数据库数据操作!
      

  5.   


    拨号做订阅发布 数据传输量大的话 数据会很慢
    我做过这样一个方法你可以参考,但有些和你不同
    1 需要改动表结构
    2 需要手工拨号文件传输总分部数据写procedure把新增修改记录导出文本,这样需要在表中添加判断标志,
    如:1 未传传输,2 已上传把文本传到其他服务器,这个可以用前台软件写个传输文件程序(或者直接用
    master..xp_cmdshell),取指定服务器目录内的文件,再用过程导入数据库,导入时进行数据过滤
    程序可以这样写过程 比如表名叫table 状态字段为state (1 未传传输,2 已上传)CREATE PROCEDURE sp_convert --数据转换过程
    with recompile ,encryption
    as
    declare
      @bcp varchar(600),
      @path char(100),
      @file char(200),
      @user char(10),
      @mdate char(8)
      @mdept char(5),
      @passwd char(8)
      if  @@TRANCOUNT >0
           COMMIT TRAN 
      select @user=suser_name()
      select @passwd=password from login where code=ltrim(rtrim(@username)) --用户登录表
      select @path=ltrim(rtrim(up_path))+'download\'
        from parm --运行参数表 包括文件传输路径
      select @mdate=convert(char(8),cast(open_close as datetime),112)
      select @file='file'+@mdate 得到带日期的txt文件
       
    --convert data to txtselect @bcp='bcp "select * from dbname..table where state=1 "  queryout '+ltrim(rtrim(@path))+ltrim(rtrim(@file))+'.txt'+' -c -t, -U '+@user+'-P '+@passwd --选择未传输数据导出
    exec master..xp_cmdshell @bcp
    begin tran
    update dbname..table  set state=1 where ct_state=1 --更新状态
    commit tran
    CREATE PROCEDURE sp_copyfile --文件copy过程
    with recompile,encryption
    as
    declare
      @path char(100),
      @copy char(300),
      @user char(10),
      @passwd char(8),
      @bcpname char(300)if  @@TRANCOUNT >0
        COMMIT TRAN 
      select @usere=suser_name()
      select @passwd=password from login where code=ltrim(rtrim(@username))
      select @path=ltrim(rtrim(up_path))+'upload\'  from parm 
    --copy files to servers
    select @copy='copy '+ltrim(rtrim(@path))+'file*.txt '+ltrim(rtrim(@path))+substring(convert(char(8),getdate(),112),7,2)
    exec master..xp_cmdshell @copy
    select @copy='del '+ltrim(rtrim(@pathname))+'file*.txt' --copy完成删除文件
    exec master..xp_cmdshell @copyname
      if  @@TRANCOUNT >0
               COMMIT TRAN 
    return 总部每天做日结处理,也用同样的方法导出数据成文本,在分部与总部联接传输数据据同时把
    总部数据传入分部
    上面的那个日结处理程序 
    有这样几个问题:
    1)拨号是以人工方式进行的, 文件上传是用前台程序做的
    2)后台的处理过程做成job每天定时处理 
    3)分布和总部的表结构相同2. 是记录的变化就好办了 ,根据上面的标志来判断
       设立标记字段的目的 
       一是为了防止数据的重复处理,已经处理过的数据就不再理会了
       二是可以减少文件传输量,只对新生成或更改的记录传输   还有一个补充,如果总部的数据发生变化,也需要用过程导出数据上面的那个总分部的处理方法比较适合这样的流程;分部对各自的数据库进行操作,比如销售,调拨等(库存数会发生变化),日结处理时把相应的销售记录传输至总部总部服务器对各分部上传的记录进行处理,比如库存数的增减,处理完毕生成各分部全部最新的数据,传回到分部,这样在总部的表中就不需要设立标记字段了