【发布时间】:2020-06-07 19:30:02
【问题描述】:
我正在尝试在两个 SQL Server 之间建立分布式事务。我的任务是从服务器 A 获取一些数据,对其进行转换,保存在服务器 B 上,然后作为更新服务器 A 的最后一步。
当我执行这条 T-SQL 语句时
BEGIN DISTRIBUTED TRANSACTION TestTran
SELECT
*
FROM dbo.test
我得到了错误:
链接服务器“xx.xx.xx.xx”的 OLE DB 提供程序“MSOLEDBSQL”返回消息“没有活动的事务。”。 消息 7391,第 16 级,状态 2,第 2 行
第一台服务器(服务器 A)是 SQL Server 2008 R2。 Microsoft SQL Server 2008 R2 (SP3) - 10.50.6220.0 (X64)
第二台服务器是 Microsoft SQL Server 2019 (RTM-GDR) (KB4517790) - 15.0.2070.41 (X64) Oct 28 2019 19:56:59 版权所有 (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Enterprise 10.0 (构建 17763:)
如下图所示,在两台服务器上都配置了 MS DTC
两个防火墙都配置为允许 DTC,如下图所示 Firewall Configuration
我不知道如何使用 DTCPing,因为 DTCPing 只允许 NETBIOS 名称。我将服务器 IP 地址放在 hosts 文件中,但 DTCPing 返回错误,如下图所示。 DTCPing error
而这只是我困难的开始。
我的第二个任务是在服务器 A(如上所示)和另一个我权限非常有限的服务器之间建立分布式事务。 让我们将该服务器命名为服务器 C。
当我尝试建立分布式事务时,出现以下错误。
链接服务器“XXXX”的 OLE DB 提供程序“SQLNCLI10”返回消息 “合作伙伴事务管理器已禁用对远程/网络事务的支持。”。
在我看来,服务器 C 配置不正确,我需要联系本地管理员。
当我致电本地管理员时,我必须更加具体。
所以,总结一下。我对分布式事务有两个困难。
没有事务处于活动状态是一条错误消息。
第二个错误消息是合作伙伴事务管理器已禁用其对分布式事务的支持。
似乎有什么问题? 提前致谢!
【问题讨论】:
标签: sql-server transactions msdtc