由于链接服务器的OLE DB提供程序“ SQLNCLI11”无法开始分布式事务,所以无法执行该操作

问题描述 投票:11回答:6

我正在尝试从我的计算机(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,所以至少我知道服务器可以互相看到,并且链接服务器存在并且正在运行

现在,网络上有很多与此相关的帖子,但我无法使其正常运行。到目前为止,这是我尝试过的:1.将DTC属性设置为以下(在两台服务器上)“在此处输入图像描述”

  1. 从控制面板->服务(在两个服务器上)重新启动分布式事务处理协调器(MSDTC)。

  2. 已卸载和已安装的DTC(在两个服务器上)。

  3. 重新启动远程服务器。

  4. 关闭两台服务器上的防火墙。

  5. 已启用sp_configure'临时分布式查询',1(在两个服务器上)。

  6. 我运行了DTCPing,并成功ping通。

  7. 链接的服务器属性更改为以下内容:“在此处输入图像描述”“ >>

  8. 还有什么可以尝试的?

更新:从另一台服务器运行事务到172.01.01.01是可行的。因此,问题不在目标服务器上,而是在源机器上。

我正在尝试从我的计算机(SQL Server 2012)到客户端服务器(SQL Server 2008)运行分布式事务。我正在尝试运行:开始从[172.01.01.01]中选择* * ....

sql-server distributed-transactions msdtc
6个回答
4
投票

如果根据OP的原始帖子在两个SQL服务器上配置了MS分布式事务处理协调器(MSDTC)之后,您仍然显示“ no transaction active”,则应检查每个主机是否可以通过IP到达(假设这就是已使用)已在链接服务器中注册。


11
投票

我遇到了类似的问题,并按以下步骤解决。 SQL Server中的对象资源管理器的树状结构中有一个节点。在这里,您将找到Serverobjects→LinkedServers→下面是分布式服务器的IP地址列表。


9
投票

在链接服务器属性窗口中将“启用促进分布式事务的启用”标志设置为false解决了我类似的问题。


0
投票

在开始的分布式事务上方尝试此SQL


0
投票

我有类似的问题。经过列出的所有事情都无济于事。我们有一个集群环境,事实证明我们的DBA在集群而不是主服务器上进行服务工作。如果其他所有方法都失败,则值得牢记:-)


0
投票

Tuve el mismo错误。链接服务器的问题解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.