증상
Java 애플리케이션에서 XA 트랜잭션을 사용하고 SQL Server instance에 설치된 Microsoft JDBC Driver for SQL Server(sqljdbc_xa.dll) 파일 버전이 4.2.6420.100 또는 6.0.7507.10인 경우, 이벤트 핸들 수는 SQL Server 프로세스가 충돌할 때까지 계속 증가합니다.
SQL Server 프로세스에 대한 이벤트 핸들 수를 찾으려면 작업 관리자를 시작한 다음 세부 정보 탭을 클릭합니다.
SQL Server 커널 리소스가 모두 없으면 응용 프로그램 이벤트 로그에 다음 항목이 기록될 수 있습니다.
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
원인
이 문제는 클래스가 DTC ITransaction instance를 만들지만 중지되었을 때 instance를 해제하지 않을 때 발생합니다. 클래스가 여러 번 호출되면 SQL Server instance에서 핸들 누수 문제가 발생합니다.
해결 방법
이 문제를 resolve하려면 기존 sqljdbc_xa.dll 드라이버를 교체합니다.
JDBC 드라이버 4.2
이렇게 하려면 Microsoft 다운로드 센터에서 업데이트된 Microsoft JDBC Driver 4.2 for SQL Server(sqljdbc_xa.dll) 패키지를 다운로드하여 설치합니다.
노트
- 업데이트된 패키지 버전 번호는 4.2.8112.100입니다.
- 업데이트된 sqljdbc_xa.dll 드라이버를 사용할 수 있도록 기존 클라이언트 쪽 라이브러리 파일(sqljdbc41.jar 또는 sqljdbc42.jar)을 바꿀 필요가 없습니다.
JDBC 드라이버 6.0
이렇게 하려면 Microsoft 다운로드 센터에서 업데이트된 Microsoft JDBC Driver 6.0 for SQL Server(sqljdbc_xa.dll) 패키지를 다운로드하여 설치합니다.
노트
- 업데이트된 패키지 버전 번호는 6.0.8112.100입니다.
- 업데이트된 sqljdbc_xa.dll 드라이버를 사용할 수 있도록 기존 클라이언트 쪽 라이브러리 파일(sqljdbc41.jar 또는 sqljdbc42.jar)을 바꿀 필요가 없습니다.
추가 정보
이 문제는 SQL Server용 JDBC 드라이버 버전 4.2.6420.100에서 발생했으며 버전 6.0.7507.10에도 존재합니다. 이 문제는 SQL Server 버전 6.0.7728.100 및 6.0.8112.100용 JDBC 드라이버에서 해결되었습니다. 이 수정은 instance가 중지되면 DTC ITransaction instance를 해제합니다.
상태
Microsoft에서 이는 "적용 대상" 섹션에 나열된 Microsoft 제품에서의 문제임을 확인했습니다.
참조 자료
Microsoft에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아보세요.
적용 대상
이 문서는 다음에 적용됩니다.
다음과 함께 사용하는 경우 SQL Server용 Microsoft JDBC 드라이버 4.2 및 6.0:
- 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