MSSQLSERVER_3989
Se aplica a: SQL Server
Detalles
Attribute | Valor |
---|---|
Nombre del 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 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 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 (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