none
MS SQLServer 在 触发器 中 使用 联接服务器 无法 跨库 操作数据的问题 RRS feed

  • 问题

  • 我有两台机器,A,B,都装了MS SQL Server 2005

    现在在B里建了个触发器,往A数据库里插数据,报错;在B的SQL查询分析器里select 查询、insert 插入 A的数据都没问题,只是写入到触发器后,调用触发器时出错,具体情况如下:
    Microsoft SQL Server Management Studio
    ---------------------------
    未更新任何行。

    未提交行 10 中的数据。
    错误源: .Net SqlClient Data Provider。
    错误信息: 无法执行该操作,因为链接服务器 "(null)" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。

    链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "没有活动事务。"。

    请更正错误并重试,或按 Esc 取消更改。
    ---------------------------
    确定   帮助   

    跨库访问应该是没问题的

    因为 使用如下语句可以完成B中数据插入A中

         insert   into   openrowset('SQLOLEDB' , '192.168.0.86' ; 'sa' ; 'sa' , tr55_bk.dbo.user)    
         select   *   from   tr55.dbo.trafaxuser  

    但是写入触发器后就有问题。

    触发器如下

    ALTER TRIGGER [syncuser]
    ON [dbo].[User] 
    AFTER INSERT
    AS
    BEGIN

    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

     set    xact_abort   on   
     begin  distributed   tran  
         insert   into   openrowset('SQLOLEDB' , '192.168.0.86' ; 'sa' ; 'sa' , tr55_bk.dbo.user)    
         select   *   from   tr55.dbo.trafaxuser       
     commit tran
    END;

    盼高手解答


    • 已编辑 iceCity 2012年5月17日 7:21 完善环境信息
    2012年5月17日 7:19

答案

全部回复