Partilhar via


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 da XACT_ABORT sessão está 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 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