一个关于公布式事务的问题
症状:执行代码insert into testtable(id) select '11'
然后触发器调用存储过程.往远程服务器加数据就出错.只要是触发器调用就会出错
错误信息:
服务器: 消息 7391,级别 16,状态 1,过程 testpro,行 7
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
数据库为:testtable
相关代码是:
CREATE TABLE [dbo].[testtable] (
[id] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[testtable2] (
[id] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE PROCEDURE testpro
@id Nvarchar(50)
AS
if not exists(Select * From msdb.dbo.Sysservers Where Isremote=1 and DataSource='192.168.0.106')
exec sp_addlinkedserver '192.168.0.106','sql server'
exec sp_addlinkedsrvlogin '192.168.0.106',false,null,'sa'
insert into [192.168.0.106].testtable.dbo.testtable2 select * From testtable where id=@id
GO
CREATE TRIGGER testtri ON [dbo].[testtable]
FOR INSERT
AS
declare @i nvarchar(10)
select @i=id From inserted
exec testpro @i
GO
大家帮忙呀...弄好几天了