Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Sintomas

Quando você usa transações XA, Driver JDBC do Microsoft SQL Server e Microsoft SQL Server como banco de dados back-end, você pode ter órfãos transações pendentes sobre o SQL Server se o Gerenciador de transações sofrer uma falha ou um problema de conectividade.

Além disso, você pode enfrentar um dos seguintes sintomas comuns:

  • As transações estão pendentes por muito tempo na instância do SQL Server. Eles podem ter um Nulo ou -2 identificação da sessão no banco de dados.

  • As transações são bloqueadas por um longo tempo por uma transação que tenha uma identificação de sessão -2 . Isso faz com que um tempo limite de bloqueio ou segmentos para congelar.

Causa

Se a conexão entre o Gerenciador de transações e o SQL Server é perdida para uma transação não preparada, o Driver JDBC do SQL Server não limpar essas transações, e eles podem continuar a usar os recursos e bloquear outras transações. Devido à implementação XA no Driver JDBC para SQL Server, SQL Server não pode detectar desconexões anormais de gerenciadores de transações. Portanto, para SQL Server, essas transações permanecem no sistema até que a transação XA expire ou o banco de dados for reiniciado. O tempo limite usa infinito na instância do SQL Server e não é configurável no banco de dados.

Solução alternativa

Para resolver esse problema, use um dos seguintes métodos:

  • Reinicie o servidor de banco de dados quando você perceber qualquer falha de máquina Virtual Java (JVM) ou problemas de conectividade de rede que resultam nessas transações órfãos.

  • Pare individualmente as transações órfãos no banco de dados para limpar os seus recursos. Para verificar que uma transação é órfão, certifique-se de que não é uma em dúvida (preparada) transação ou que no momento está sendo concluída. Todas as transações que duram por meio de uma reinicialização do relacionados JVM e um ciclo de recuperação bem-sucedida devem ser órfãos.

  • Defina um valor de tempo limite para as transações XA for maior do que a transação mais longa para forçá-los a parar, assim como o valor de tempo limite é excedido. Você pode fazer isso chamando o método XAResource.setTransactionTimeout() .

  • Para muitos gerentes de transação de terceiros, o objeto XAResource não é acessado diretamente pelo código de chamada e o Gerenciador de transações não define o valor de tempo limite da transação. Nessa situação, um aplicativo externo pode ser usado para definir o tempo limite da transação como um novo valor padrão. Esse novo padrão será usada por todas as outras transações que não especificam um tempo limite da transação.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×