如何在事务中使用链接服务器将数据插入远程表?

4

我的联接服务器设置正确,我可以执行以下查询:

INSERT INTO [RemoteServer].[Table] SELECT * FROM [LocalServer].[Table]

然而,当我在事务内部执行相同的操作时:

BEGIN TRAN INSERT INTO [RemoteServer].[Table] SELECT * FROM [LocalServer].[Table] COMMIT TRAN

我会收到如下错误信息:

OLE DB提供程序“SQLNCLI”为链接的服务器“66.70.123.202”返回消息“没有活动的事务”。Msg 7391,级别 16,状态 2,第 3 行
由于OLE DB提供程序“SQLNCLI”无法开始分布式事务,因此无法执行操作。


请参见:http://groups.google.com/group/microsoft.public.sqlserver.server/msg/127255ab5a3a1fe0 - OMG Ponies
根据他们的说法,我应该能够从彼此的服务器上PING,但是我该如何做到呢?它们位于不同的域中。 - Zeus
所以最终我没有在事务中执行我的过程。我是在try和catch块内恢复我的数据。 - Zeus
1个回答

3
检查两台服务器上是否运行了MS DTC服务,并且配置正确以允许分布式查询。

是的,MS DTC 运行正常。我可以在没有事务开始的情况下查询和插入数据到远程服务器中。我已经设置了“无需认证”,并允许所有来自 MS DTC 的出入流量。 - Zeus
你的防火墙是否已配置允许 MS DTC? - Sergey Olontsev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接