添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

发生此错误的原因是Microsoft分布式事务处理协调器(MSDTC)服务未运行或已禁用网络访问。

在某些情况下,也可能收到错误 8522:

Microsoft Distributed Transaction Coordinator (MS DTC) has stopped this transaction.

7300 到 7399 范围内的错误号表示影响提供程序的问题。 由于每个提供程序可能具有不同的功能并显示不同的详细信息,因此可能不会收到完整的错误消息。 若要从提供程序检索完整的错误消息,请在运行生成错误的查询之前运行以下命令:

DBCC TRACEON (3604, 7300)

如果从 SQL Server 复制或 SQL Server Integration Services (SSIS)等进程收到错误 7391,则如果代码包含 BEGIN DISTRIBUTED TRAN 语句,则也可能会收到错误消息。

最佳做法是限制事务中的代码,该事务涉及仅对远程服务器进行的分布式查询。

  • 若要检查驱动程序是否支持分布式事务,请联系链接服务器查询中使用的驱动程序供应商。

  • 检查目标服务器上的对象是否指向第一台服务器。 这称为环回情况。 环回链接服务器 用于测试,许多操作(如分布式事务)不支持。

    服务器通信

    若要确保服务器之间的通信成功,请执行以下步骤:

  • 检查网络名称解析是否正常工作。 确保服务器可以按名称相互通信,而不仅仅是通过 IP 地址进行通信。 检查两个方向(例如,从服务器 A 到服务器 B,从服务器 B 到服务器 A)。 在运行分布式查询之前,请解决网络上的所有名称解析问题。 这可能涉及更新 WINS、DNS 或 LMHost 文件。

  • 如果有防火墙,请确保正确打开远程过程调用(RPC)端口。 有关详细信息,请参阅以下文章:

  • 如何配置 RPC 动态端口分配以使用防火墙 - Windows Server

  • 为 AD 域和信任配置防火墙 - Windows Server

  • 配置 Windows 防火墙以允许 SQL Server 访问 - SQL Server

  • 检查指向目标服务器上的对象。 如果对象是视图或存储过程,或者它导致触发器运行,请检查它是否隐式指向另一个服务器。 如果是,则第三台服务器是问题的根源。 直接在第三台服务器上运行查询。 如果无法执行此操作,则链接服务器查询不是问题。 首先解决基础问题。

  • 检查是否使用远程访问服务器(RAS)访问远程服务器。 如果是,请确保已实现路由 RAS(RRAS)。 链接服务器不适用于 RAS,因为 RAS 仅允许单向通信。

    服务器配置

    按照以下步骤配置服务器:

  • 在分布式事务涉及的所有服务器上启动分布式事务处理协调器(DTC 或 MS DTC)。 有关启用网络 DTC 访问的信息,请参阅 OLE DB 提供程序 - SQL Server 的错误消息。

  • 针对 大多数 OLE DB 访问接口(包括 SQL Server)在隐式或显式事务中,将XACT_ABORT 选项设置为 ON。 在运行查询之前,可以运行以下命令来执行此操作。

    SET XACT_ABORT ON
    

    如果提供程序支持嵌套事务,则不需要此选项。

  • 检查任何服务器是否位于 Windows Server 故障转移群集上。 群集上的 MSDTC 服务必须有自己的 IP 地址。 确保在每个服务器上发生 DTC 服务的正确名称解析。 必须在名称解析系统中定义 DTC 的 IP 地址(例如 WINS、DNS 或 LMHosts)。 验证每个服务器是否可以按名称与其他服务器上的 MSDTC 通信,而不仅仅是 IP 地址。 检查两个方向。 例如,从服务器 A 检查到服务器 B 的 MSDTC 服务,然后从服务器 B 检查到服务器 A 的 MSDTC。 在运行分布式查询之前,必须解决网络上的所有名称解析问题。 若要在群集上配置 MSDTC,请参阅 SQL 故障转移群集上的 MSDTC 建议 - Microsoft社区中心

  • 如果使用较旧的远程服务器技术而不是建议的链接服务器,请将 远程进程跨 配置选项设置为 OFF 服务器,或在运行任何分布式查询之前运行 SET REMOTE_PROC_TRANSACTIONS OFF 语句。 如果此设置设置为 ON,则远程过程调用是在本地事务中进行的。 有关详细信息,请参阅 配置远程过程 trans (服务器配置选项) - SQL Server

  • 检查两台服务器上的系统函数 @@SERVERNAME 的返回值。 验证返回值是否与每台服务器的计算机名称匹配。 如果不匹配,请重命名服务器。

  • 验证 SQL Server 启动帐户是否对以下注册表项具有完全控制权限:

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer

  • 在 Oracle 数据库中设置链接服务器并对其进行故障排除
  • 链接服务器(数据库引擎)
  •