解决方案 »

  1.   

    这个开了吗?
    --開啓外部RPC配置,允许其它SQL Server使用RPC远程连接到本SQL Server
    EXEC   sp_serveroption   'mgfTS','rpc out','TRUE'  (也可在企业管理器中-->数据库-->安全-->链接数据库-->点击你需要配置的链接数据库-->属性页-->   
      "server   options"-->勾选rpc   out)以下是在被訪問端數據庫設置
    --設定允許外聯exec sp_configure 'show advanced options',1   --開啓高級設置
    reconfigure WITH OVERRIDE;exec sp_configure 'Ad Hoc Distributed Queries',1--允許openrowset opendatasource訪問
    reconfigure WITH OVERRIDE;
    exec sp_configure 'show advanced options',0   --關閉高級設置
    reconfigure WITH OVERRIDE;
      

  2.   

    RPC开着的。定一下吧,定一下啦,求扩撒,求转播,急
      

  3.   

    对触发器所在表的DML语句,加分布式事务试试,begin distributed tran
      [触发器所在表的DML语句]
    commit tran
      

  4.   


    连接好像成功了,但新问题提示:
    由于列 "user_no",链接服务器 "srv2" 的 OLE DB 访问接口 "SQLNCLI10" 无法 INSERT INTO 表 "[srv2].[bsv5].[dbo].[dt_user]"。数据值违反了该列的完整性约束。就是前台也写了值,但是插入时候为啥还是空,所以提示违反了完整性
    我做了测试,把这几个字段写成固定值就可以插入进去了create trigger tr_insert_usra01 on usra01
    for insert
    as
    set xact_abort on
    insert srv2.bsv5.dbo.dt_user(user_lname,user_no,user_id)
    select A0101,C01TC,A0177 from inserted
    go就是前台写了A0101,C01TC,A0177 字段都有值,但执行时候却提示违反了约束,查了一下这个三个字段再插入时候都是空的,为啥啊!!
      

  5.   

    A0101,C01TC,A0177 字段明明都有值,就只在执行触发器时候却成了空值。
      

  6.   

    建议
    1.查看插入的目标表是否有其他的约束? 如foreign key,not null,唯一约束等等.看具体是违反了哪一条.
    2.调试时,可以暂时将select A0101,C01TC,A0177 from inserted的值插入一个本地的自定义的表(表上无任何约束的).
       这样就能更直观的看到数据本身了.
      

  7.   

    用DTCPING测试一下两边是否真正联通。
      

  8.   

    谢谢回复啊,正在继续尝试。我给这三个A0101,C01TC,A0177 值写成了固定的值'张三','152825199205','100001'这样,执行时候是正确了,这三个值也插入到第二个服务器的库了。。
    所以
    1应该之前的错误是这三个值是空的,那么我前台这三个值确实是有值的,不知道为啥到执行触发器时候没值了,把触发器删除本地是可以成功。
    2我在我本地搭了相同的俩库,执行这个触发器是完全没问题的