【发布时间】:2014-07-23 18:17:50
【问题描述】:
我正在尝试从我的机器 (SQL Server 2012) 到客户端服务器 (SQL Server 2008) 运行分布式事务。
我正在尝试运行:
begin distributed transaction
select * from [172.01.01.01].master.dbo.sysprocesses
Commit Transaction
我得到:
OLE DB provider "SQLNCLI11" for linked server "172.01.01.01" 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 "172.01.01.01" was unable to begin a distributed transaction.
我可以在返回数据的情况下对该服务器运行 SELECT,所以至少我知道服务器可以互相看到,并且链接服务器存在并且正在运行
现在,网上有很多关于这个的帖子,但我无法让它发挥作用。这是我迄今为止尝试过的:
-
将 DTC 属性设置为以下(在两个服务器上)
-
从控制面板 -> 服务(在两台服务器上)重新启动分布式事务协调器 (MSDTC)。
-
卸载和安装 DTC(在两台服务器上)。
-
重启远程服务器。
-
关闭两台服务器上的防火墙。
-
启用 sp_configure 'Ad Hoc Distributed Queries', 1(在两台服务器上)。
-
我运行了 DTCPing,它 ping 成功了。
还有什么可以尝试的?
更新: 将事务从另一台服务器运行到 172.01.01.01 有效。 因此,问题不在目标服务器上,而是在我作为源的机器上。
【问题讨论】:
-
您找到解决方案了吗?如果你这样做,请把答案放在这里:)
-
我也遇到了同样的问题,如果你找到了解决办法请分享一下
标签: sql-server distributed-transactions msdtc