计算机pc1:
IP地址:192.3.190.200
数据库名称:pc1_db
数据库表:T_pc1(a,b,c)计算机pc2:
局域网内服务器IP地址:192.3.190.180
数据库名称:pc2_db
数据库用户名:sum
密码:sum_pc2
数据库表:T_pc2(e,f)如何写一个触发器,当pc1的表T_pc1有insert时候,把pc1的表T_pc1 insert的数据a字段和c字段的内容也insert到计算机pc2的表T_pc2(e,f)中。
即T_pc1 字段a insert的内容-->insert 到T_pc2 的e字段,
  T_pc1 字段b insert的内容-->insert 到T_pc2 的f字段。

解决方案 »

  1.   

    触发器涉及跨服务器的操作,需要开启两台服务器的分布式事务
    而且分布式的语句也有些规定,比如一定要开启SET XACT_ABORT ON等等
    具体如何开启分布式事务,参考一下
    http://www.cnblogs.com/yourancao520/archive/2012/02/28/2371231.html
      

  2.   


    pc2有insert表T_pc2 的权限,没有其他的权限可以在pc1的计算机上用触发器实现吗?
      

  3.   

    --step 1 先建立连接服务器,这个我就不写语句了。lz查一下就知道怎么弄了
     
    --step 2 触发器处理
    CREATE TRIGGER trg_T_pc1 ON [dbo].T_pc1
    for insert
    AS
    begin 
        set xact_abort on  
        begin distributed tran
        Insert into [对应192.3.190.180的连接服务器要先建好].pc2_db.T_pc2(e,f)
        select a,c from inserted
    End
      

  4.   


    --创建
    exec sp_addlinkedserver   '别名', '', 'SQLOLEDB', 'ip'
    --连接
    exec sp_addlinkedsrvlogin  '别名', 'false',null, '账号', '密码'  --以后不再使用时删除链接服务器  
    exec sp_dropserver  '别名', 'droplogins'