SQLServer 错误 故障 处理 修复 支持远程
详细信息
Attribute | 值 |
---|---|
产品名称 | SQL Server |
事件 ID | 3988 |
事件源 | MSSQLSERVER |
组件 | SQLEngine |
符号名称 | XACT_UNSUPPORT_PARALLEL_TRAN2 |
消息正文 | 不允许启动新事务,因为有其他线程正在该会话中运行。 |
说明
如果执行的分布式查询联接 SQL Server 的远程实例承载的多个表,同时 XACT_ABORT
会话设置为“开”,则会出现此错误。 将向用户报告如下错误消息:
消息 3988,级别 16,状态 1,行 #
不允许启动新事务,因为有其他线程正在该会话中运行。
原因
当满足以下条件时,SQL Server 处理分布式查询 (DQ) 的方式存在一些设计限制:
- SQL Server 联接一个远程 SQL Server 数据源的多个表。
- 正在发出查询的会话未在分布式事务中登记。
在这种情况下,尝试运行查询可能会引发“说明”部分中提到的两个错误。
用户操作
若要解决此问题,请将分布式查询包含在“begin distributed transaction”语句中:
BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION