MSSQLSERVER_3989
Aplica-se a: SQL Server
Detalhes
Atributo | Valor |
---|---|
Nome do produto | SQL Server |
ID do evento | 3989 |
Origem do Evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbólico | XACT_UNSUPPORT_PARALLEL_TRAN3 |
Texto da mensagem | Não é permitido iniciar uma nova solicitação porque ela deve ter um descritor de transação válido. |
Explicação
Esse erro ocorre quando você executa uma consulta distribuída que une várias tabelas hospedadas por instâncias remotas do SQL Server enquanto a configuração da XACT_ABORT
sessão está ON. Uma mensagem de erro semelhante à seguinte é relatada ao usuário:
Mensagem 3989, Nível 16, Estado 1, Linha nº
Não é permitido iniciar uma nova solicitação porque ela deve ter um descritor de transação válido.
Causa
Há algumas limitações de design na maneira como o SQL Server lida com DQs (consultas distribuídas) quando as seguintes condições são verdadeiras:
- O SQL Server une várias tabelas de uma fonte de dados remota do SQL Server.
- A sessão que emite a consulta não está inscrita em uma transação distribuída.
Nessa situação, uma tentativa de executar a consulta pode gerar um dos dois erros mencionados na seção Explicação.
Ação do usuário
Para resolver o problema, coloque a consulta distribuída em uma instrução 'begin distributed transaction':
BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION