MSSQLSERVER_3988
Aplica-se a:SQL Server
Detalhes
Atributo | Valor |
---|---|
Nome do Produto | SQL Server |
ID do evento | 3988 |
Origem do Evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbólico | XACT_UNSUPPORT_PARALLEL_TRAN2 |
Texto da mensagem | Não são permitidas novas transações porque há outros threads em execução na sessão. |
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 de sessão XACT_ABORT
é ON. Uma mensagem de erro semelhante à seguinte é relatada ao usuário:
Mensagem 3988, Nível 16, Estado 1, Linha nº
Não são permitidas novas transações porque há outros threads em execução na sessão.
Causa
Há algumas limitações de design na maneira como o SQL Server processa as 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de