Compartir vía


MSSQLSERVER_3988

Se aplica a: SQL Server

Detalles

Attribute Valor
Nombre del producto SQL Server
Id. de evento 3988
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico XACT_UNSUPPORT_PARALLEL_TRAN2
Texto del mensaje No se permite una nueva transacción porque hay otros subprocesos en ejecución en la sesión.

Explicación

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

Mensaje 3988, nivel 16, estado 1, n.º de línea
No se permite una nueva transacción porque hay otros subprocesos en ejecución en la sesión.

Causa

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

  • SQL Server combina varias tablas de un origen de datos remoto de SQL Server.
  • 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