徵狀
如果您的 JAVA 應用程式使用 XA 事務,且在 sql Server 實例中安裝的 SQL Server (sqljdbc_xa .dll)檔案的 Microsoft JDBC 驅動程式版本是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 實例時發生,但無法在該實例停止時再放開。 當您多次呼叫此類別時,會在 SQL Server 實例中發生控制碼洩漏問題。
解決方案
若要解決此問題,請取代現有的 sqljdbc_xa .dll 驅動程式。
JDBC 驅動程式4。2
若要這樣做,請從 Microsoft 下載中心下載並安裝適用于 SQL Server (sqljdbc_xa .dll)套件的更新 MICROSOFT JDBC 驅動程式 4.2 。 注意事項
-
更新的套件版本號碼是 4.2.8112.100。
-
現有的用戶端文件庫檔案(sqljdbc41 或 sqljdbc42)不需要取代,因此您可以使用更新的 sqljdbc_xa .dll 驅動程式。
JDBC 驅動程式6。0
若要這樣做,請從 Microsoft 下載中心下載並安裝 適用于 SQL Server (sqljdbc_xa .dll)套件的更新 MICROSOFT JDBC 驅動程式 6.0 。
注意事項
-
更新的套件版本號碼是 6.0.8112.100。
-
現有的用戶端文件庫檔案(sqljdbc41 或 sqljdbc42)不需要取代,因此您可以使用更新的 sqljdbc_xa .dll 驅動程式。
其他相關資訊
這個問題是在 SQL Server 版本4.2.6420.100 的 JDBC 驅動程式中引入,也存在於版本6.0.7507.10 中。 這個問題已在 SQL Server 版本6.0.7728.100 和 6.0.8112.100的 JDBC 驅動程式中修正。 此修正程式會在實例停止時,釋放 DTC ITransaction 實例。
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
參考
瞭解 Microsoft 用於描述軟體更新的 詞彙 。
適用於
本文適用于下列各項:
-
Microsoft JDBC 驅動程式4.2 和 6.0 for SQL Server 搭配使用時使用:
-
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
-