2013-05-01 182 views
0

我们有两台服务器在本地(windows server 2003)和一台在godaddy(windows server 2008)中,在两台服务器中安装了sql server 2005,并在两台服务器中创建了链接服务器。sql server 2005中的链接服务器

我们已经启用了在godaddy的服务器触发一个sampletbl表,每当我们试图插入来自GoDaddy的数据库本地数据库使用启用了扳机,那么我们所面临的以下错误的数据。

链接服务器“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

这将是非常不可靠的(正如你可以看到的)。您应该使用触发器插入GoDaddy服务器上的日志表,然后以rgaulr批处理(例如每五分钟)加载一次。或者,您可以使用日志传送或复制,这是保持数据库同步的“本地”方式。对于您的特定问题,表中发生的插入可能位于事务中,因此它试图在事务中登记链接的服务器,并且它不能。 – 2013-05-01 05:45:26

回答