我们在本地(Windows Server 2003)有一台服务器,在godaddy(windows server 2008)有一台服务器,在两台服务器上都安装了sql server 2005,并在两台服务器上都创建了链接服务器。
我们已经在godaddy服务器中为一个 sampletbl 表启用了触发器,每当我们尝试使用启用的触发器将数据从godaddy数据库插入本地数据库时,我们就会面临以下错误。< / p>
链接服务器“211_TEST”的OLE DB提供程序“SQLNCLI”返回消息“没有事务处于活动状态。”。
Msg 7391,Level 16,State 2,Procedure 36to211,Line 8
无法执行该操作,因为链接服务器“211_TEST”的OLE DB提供程序“SQLNCLI”无法开始分布式事务。
触发代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[36to211] on [dbo].[SampleTbl]
FOR INSERT
as
Declare @a int;
Declare @b int;
Declare @c int;
select @a=TETS_DET,@b=TEST_DET2,@c=TEST_DET3 from SampleTbl
insert into [211_TEST].[MAPBULLION].[dbo].[TEST1]
(TETS_DET,TEST_DET2,TEST_DET3)
values
(@a,@b,@c)
此处[211_TEST]是链接服务器名称,MAPBULLION是本地服务器中的数据库,TEST1是本地服务器中的表名称。
检查所有MSDTC设置,它们是按照愿望
请提供解决方案。
这是我们尝试执行的查询,用于将数据从godaddy服务器插入本地服务器:
insert into sampletbl (TETS_DET, TEST_DET2, TEST_DET3)
VALUES ('5', '6', '7')
答案 0 :(得分:0)
首先在google上搜索“sql server distributed transaction linked server”
说它是一个已知的问题......