MSSQLSERVER_3989

适用范围:SQL Server

详细信息

Attribute
产品名称 SQL Server
事件 ID 3989
事件来源 MSSQLSERVER
组件 SQLEngine
符号名称 XACT_UNSUPPORT_PARALLEL_TRAN3
消息正文 不允许启动新请求,因为该请求应具有有效的事务描述符。

说明

执行分布式查询时,会在会话设置为 ON 时联接 SQL Server 远程实例托管的多个表时XACT_ABORT发生此错误。 将向用户报告如下错误消息:

消息 3989,级别 16,状态 1,行 #
不允许启动新请求,因为该请求应具有有效的事务描述符。

原因

当满足以下条件时,SQL Server 处理分布式查询(DQs)的方式存在一些设计限制:

  • SQL Server 联接一个远程 SQL Server 数据源的多个表。
  • 正在发出查询的会话未在分布式事务中登记。

在这种情况下,尝试运行查询可能会引发“说明”部分中提到的两个错误。

用户操作

若要解决此问题,请将分布式查询包含在“begin distributed transaction”语句中:

BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION