Sintomas
Se a sua aplicação Java utilizar Transações XA, e a versão do ficheiro Microsoft JDBC Driver for SQL Server (sqljdbc_xa.dll) que está instalada no caso do SQL Server é de 4.2.6420.100 ou 6.0.7507.10,a contagem de cabos do Evento continua a aumentar até que o processo do SQL Server se despenhe. Para encontrar a contagem de manenete do Evento para o processo DO SERVIDOR SQL, inicie o Gestor de Tarefas e, em seguida, clique no separador Detalhes. Quando os recursos kernel do SQL Server estiverem esgotados, poderá encontrar a seguinte entrada registada no registo do evento da Aplicação:
Log Name: Application
Source: Microsoft-Windows-Complus
Date: date time
Event ID: 4689
Task Category: (8)
Level: Error
Keywords: Classic
User: N/A
Computer: computer_name
Description:
The run-time environment has detected an inconsistency in its internal state. This indicates a potential instability in the process that could be caused by the custom components running in the COM+ application, the components they make use of, or other factors. Error in COM\complus\src\inc\UTSem.H(100), Insufficient system resources exist to complete the requested service.
: CreateEvent returned a NULL handle
Causa
Esta questão ocorre quando uma classe cria uma instância DTC ITransaction, mas não liberta o caso quando é parado. Quando a classe é chamada muitas vezes, um problema de fuga de cabo ocorre no caso do SQL Server.
Resolução
Para resolver este problema, substitua o condutor sqljdbc_xa.dll existente.
Condutor JDBC 4.2
Para isso, descarregue e instale o pacote 4.2 do Microsoft JDBC Driver 4.2 atualizado para o SQL Server (sqljdbc_xa.dll) do Microsoft Download Center. Notas
-
O número atualizado da versão do pacote é 4.2.8112.100.
-
Os ficheiros existentes da biblioteca do lado do cliente(sqljdbc41.jar ou sqljdbc42.jar) não têm de ser substituídos para que possa utilizar o controlador sqljdbc_xa.dll atualizado.
Condutor JDBC 6.0
Para isso, descarregue e instale o pacote 6.0 atualizado do Microsoft JDBC Driver 6.0 para o SQL Server (sqljdbc_xa.dll) do Microsoft Download Center.
Notas
-
O número atualizado da versão do pacote é 6.0.8112.100.
-
Os ficheiros existentes da biblioteca do lado do cliente(sqljdbc41.jar ou sqljdbc42.jar) não têm de ser substituídos para que possa utilizar o controlador sqljdbc_xa.dll atualizado.
Mais Informações
Esta emissão foi introduzida no JDBC Driver para a versão 4.2.6420.100 do SQL Server, e também existe na versão 6.0.7507.10. Este problema é fixado no Condutor JDBC para a versão 6.0.7728.100 e 6.0.8112.100. Esta correção liberta a instância de ITransacção DTC quando a ocorrência é interrompida.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.
Aplica-se a
Este artigo aplica-se ao seguinte:
-
Microsoft JDBC Driver 4.2 e 6.0 para SQL Server quando usado com:
-
Microsoft SQL Server 2016
-
Microsoft SQL Server 2014
-
Microsoft SQL Server 2012
-
Microsoft SQL Server 2008 R2
-
Microsoft SQL Server 2008
-
Microsoft SQL Server 2005
-