sql server 2005中的链接服务器
问题描述:
我们有两台服务器在本地(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')
答
先打在谷歌的“SQL Server分布式事务的链接服务器”
说这是一个已知的问题...
这将是非常不可靠的(正如你可以看到的)。您应该使用触发器插入GoDaddy服务器上的日志表,然后以rgaulr批处理(例如每五分钟)加载一次。或者,您可以使用日志传送或复制,这是保持数据库同步的“本地”方式。对于您的特定问题,表中发生的插入可能位于事务中,因此它试图在事务中登记链接的服务器,并且它不能。 – 2013-05-01 05:45:26