请帮我看看这个分布式处理的问题???
我建立了一个链接服务器NXBWSERV
insert into NXBWSERV.DawTest.dbo.Dispose values( '3 ', '测试成功 ')
执行这条语句成功
接下来我把这条语句放在触发器中却出现问题:
CREATE TRIGGER [trigger_Insert] ON [dbo].[myTest]
FOR INSERT
AS
insert into NXBWSERV.DawTest,dbo.Dispose values( '3 ', 'asdf ')
go
insert into myTest values( '1 ', '2 ', '3 ')--引发触发器执行
报错:服务器: 消息 7391,级别 16,状态 1,过程 trigger_Insert,行 4
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB ' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
请问这是怎么回事??怎么解决??
------解决方案----------------------try
CREATE TRIGGER [trigger_Insert] ON [dbo].[myTest]
FOR INSERT
AS
SET XACT_ABORT ON
insert into NXBWSERV.DawTest.dbo.Dispose values( '3 ', 'asdf ') --将逗号改为点
SET XACT_ABORT OFF
go
------解决方案--------------------如果是windows2003请用dcomcnfg设置一下MSDTC属性,另外,ping目标服务器的机器名(不要ping IP),看看能能不能解析出该机器名!如果ping不通,分布式事务必然失败!分布式事务只人机器名,不认IP地址的!想办法能互相解析机器名就可以了!