存在这样的环境:
服务器serA,服务器serB
在服务器serA中建立有链键到serB的键接服务器Hao
在serA中执行select * form Hao.pubs.dbo.titles此语句可以得到查询结果
在serA中执行insert into Hao.pubs.dbo.titles(XX,YY)values('aa','bb')语句也成功但当通过触发器
CREATE TRIGGER tr_insert_titles  ON [dbo].[titles] 
FOR INSERT
AS
set XACT_ABORT on
insert into Hao.pubs.dbo.titles(XX,YY)values('aa','bb')当在表titles中插入数据时却出现了以下错误:错误代码:   
  服务器:   消息   7391,级别   16,状态   1,行   15   
  该操作未能执行,因为   OLE   DB   提供程序   'SQLOLEDB'   无法启动分布式事务。   
  [OLE/DB   provider   returned   message:   新事务不能登记到指定的事务处理器中。   ]   
这是怎么回事呢?
在查询分析器中单独执行insert into Hao.pubs.dbo.titles(XX,YY)values('aa','bb')而不是放到触发器的时间可以执行通过,到了触发器中就出错了呢?

解决方案 »

  1.   

    触发器在serA中的pubs.dbo.titles表建立。
      

  2.   

    --try
    CREATE TRIGGER tr_insert_titles ON [dbo].[titles]
    FOR INSERT
    AS
    set XACT_ABORT on
    exec ('SET QUOTED_IDENTIFIER OFF  insert into Hao.pubs.dbo.titles(XX,YY)values("aa","bb)')
      

  3.   

    请参考微软的帖子:
    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;329332
      

  4.   

    无法启动分布式事务
    用的是xp或2003server把
    msdtc的问题,微软有解决的方法
      

  5.   

    是win2000+sqlserver2000的。
    微软没有提到win2000的解决方法。
      

  6.   

    win2000中不存在有以下所说的:
    在“安全配置”对话框中,单击以选中“网络 DTC 访问”复选框。
      

  7.   

    再参考一下这个帖子:
    http://community.csdn.net/Expert/topic/4824/4824144.xml?temp=.1700098