Compartir por


MSSQLSERVER_3989

Se aplica a:SQL Server

Detalles

Atributo Value
Nombre de producto SQL Server
Id. de evento 3989
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico XACT_UNSUPPORT_PARALLEL_TRAN3
Texto del mensaje No se permite iniciar la nueva solicitud porque debe llegar con un descriptor de transacción válido.

Explicación

Este error se produce al ejecutar una consulta distribuida que combina varias tablas hospedadas por instancias remotas de SQL Server mientras la configuración de sesión XACT_ABORT está ACTIVADA. El usuario recibe un mensaje de error similar al siguiente:

Mensaje 3989, nivel 16, estado 1, n.º de línea
No se permite iniciar la nueva solicitud porque debe llegar con un descriptor de transacción válido.

Causa

Hay algunas limitaciones de diseño en la forma en que SQL Server controla las consultas distribuidas (DQ) cuando se cumplen las condiciones siguientes:

  • SQL Server combina varias tablas de un origen de datos SQL Server remoto.
  • La sesión que emite la consulta no está dada de alta en una transacción distribuida.

En esta situación, un intento de ejecutar la consulta puede producir cualquiera de los dos errores que se mencionan en la sección Explicación.

Acción del usuario

Para solucionar el problema, incluya la consulta distribuida en una instrucción "begin distributed transaction":

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