Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 1.88 KB

mssqlserver-3989-database-engine-error.md

File metadata and controls

52 lines (40 loc) · 1.88 KB
title description author ms.author ms.reviewer ms.date ms.service ms.subservice ms.topic helpviewer_keywords
MSSQLSERVER_3989
MSSQLSERVER_3989
suresh-kandoth
sureshka
vencher, tejasaks, docast
12/25/2020
sql
supportability
reference
3989 (Database Engine error)

MSSQLSERVER_3989

[!INCLUDE SQL Server]

Details

Attribute Value
Product Name SQL Server
Event ID 3989
Event Source MSSQLSERVER
Component SQLEngine
Symbolic Name XACT_UNSUPPORT_PARALLEL_TRAN3
Message Text New request is not allowed to start because it should come with valid transaction descriptor.

Explanation

This error occurs when you execute a distributed query that joins multiple tables hosted by remote instances of [!INCLUDEssNoVersion] while the XACT_ABORT session setting is ON. An error message similar to the following is reported to the user:

Msg 3989, Level 16, State 1, Line #
New request is not allowed to start because it should come with valid transaction descriptor.

Cause

There are some design limitations in the way [!INCLUDEssNoVersion] handles distributed queries (DQs) when the following conditions are true:

  • [!INCLUDEssNoVersion] joins multiple tables of one remote [!INCLUDEssNoVersion] data source.
  • The session that is issuing the query is not enlisted in a distributed transaction.

In this situation, an attempt to run the query may raise either of the two errors that are mentioned in the Explanation section.

User action

To work around the issue, enclose the distributed query in a 'begin distributed transaction' statement:

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