在链接SQL Server的事务中运行查询时出现MSDTC错误

时间:2014-10-23 12:44:44

标签: sql-server linked-server distributed-transactions msdtc

我有一个链接的SQL服务器(这两个服务器位于两个不同的大洲,并通过VPN连接)。运行以下sql时,它会毫无问题地返回数据:

Select TOP 1 * from [LinkedServer].DB.DBO.Table1 

在交易中运行时,我收到以下错误:

BEGIN DISTRIBUTED TRANSACTION 
Select TOP 1 * from [LinkedServer].DB.DBO.Table1 
COMMIT TRANSACTION

OLE DB provider "SQLNCLI11" for linked server "LinkedServer" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Line 2
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "LinkedServer" was unable to begin a distributed transaction.

网上有很多关于此特定错误消息的帖子(下面的链接),但没有一个步骤解决了我的问题,此时此刻我感到茫然(当然这是防火墙问题/阻止端口)。

此时任何建议都会受到欢迎。

http://thesmartpanda.com/sqlncli11-linked-server-dtc-issue/ http://msdn.microsoft.com/en-us/library/aa561924.aspx

1 个答案:

答案 0 :(得分:0)

经过大量挖掘和解决问题后,结果证明与DNS有关。 我不知道DTC需要主机名而不是IP来建立链接。 一旦我知道上面的内容,我就试图按名称ping链接服务器,但它失败了。

我在主机文件的目录&c; \ windows \ system32 \ drivers \ etc'中添加了映射。 然后,这允许我按名称ping服务器,并按名称创建新的链接服务器。

在此之后一切正常。