本帖最后由 ffl871007 于 2013-01-21 12:32:33 编辑

解决方案 »

  1.   

    exec sp_addlinkedserver   'DD', '', 'SQLOLEDB','192.168.11.234'
    exec sp_addlinkedsrvlogin 'DD','false',null,'sa','hello'
      
     Go 
    CREATE TRIGGER DepInsertForSync 
    ON Department                        
    FOR INSERT                       
    AS   
      SET NOCOUNT ON
      SET XACT_ABORT ON   
       INSERT INTO DD.sync.dbo.HIS_CSYSDEPT
       values( 
        'HIS_CSYSDEPTId', 
        'DEPT_NO', 
        'DEPT_CNAME', 
        'DEPT_ENAME'
       )   
       SELECT 
       Dep.DepartmentId, 
       Dep.Code, 
       Dep.Name  
       FROM Department Dep 
       INNER JOIN Inserted vir ON  vir.DepartmentId = Dep.DepartmentId  
      

  2.   


    不对吧,你写的意思不就是将
    values(
        'HIS_CSYSDEPTId',
    'DEPT_NO',
    'DEPT_CNAME',
    'DEPT_ENAME')
    作为值写入了吗?我要的是后面的select中的值
      

  3.   

    exec sp_addlinkedserver   'DD', '', 'SQLOLEDB','192.168.11.234'
    exec sp_addlinkedsrvlogin 'DD','false',null,'sa','hello'
      
     Go 
    CREATE TRIGGER DepInsertForSync 
    ON Department                        
    FOR INSERT                       
    AS   
      SET NOCOUNT ON
      SET XACT_ABORT ON   
       INSERT INTO DD.sync.dbo.HIS_CSYSDEPT(  
        DEPT_NO, 
        DEPT_CNAME, 
        DEPT_ENAME
       )   
       SELECT 
       Dep.DepartmentId, 
       Dep.Code, 
       Dep.Name  
       FROM Department Dep 
       INNER JOIN Inserted vir ON  vir.DepartmentId = Dep.DepartmentId  
      

  4.   

    我不知道你的表结构,所以你要自己测试了,你insert那里是4列,select 才3列,肯定报错的。
      

  5.   

    把列名的单引号去掉呢
    INSERT INTO DD.sync.dbo.HIS_CSYSDEPT(
        HIS_CSYSDEPTId,
        DEPT_NO,
        DEPT_CNAME,
        DEPT_ENAME
       )