IBM Support

SQL0998N Reason Code = 16 . Subcode = 3-8004D00E from an OLEDB application using MSDTC on Windows 64-bit

Troubleshooting


Problem

SQL0998N Error occurred during transaction or heuristic processing. Reason Code = 16 . Subcode = 3-8004D00E from an OLEDB application using MSDTC on Windows 64-bit server

Symptom

[IBM][CLI Driver][DB2] SQL0998N Error occurred
during transaction or heuristic processing. Reason Code = 16 . Subcode
= 3-8004D00E . SQLSTATE=58005 Original Source: Microsoft OLE DB
Provider for ODBC Drivers Stored Procedure

"Subcode = "3-8004D00E". This indicates that Microsoft
returned back a "8004D00E" return code when DB2 attempted to enlist a
transaction with MSDTC. This stands for "XACT_E_NOTRANSACTION" which
means "The transaction has already been implicitly or explicitly
committed or aborted."

Cause

OLE DB Connection Pooling

Resolving The Problem

Disable OLE DB connection pooling.

Windows 64-bit server supports both 32 and 64-bit applications, so please ensure you follow the correct procedure to disable OLEDB connection pooling depending on the bitness of the application.

  • For 64-bit applications:

  • - Disable OLE DB connection pooling using the registry variable below:
    - Start the Registry Editor (Regedit.exe).
    - Navigate to the following registry location depending on the OLEDB provider in use:

    For MSDASQL:
    HKEY_CLASSES_ROOT\CLSID\{c8b522cb-5cf3-11ce-ade5-00aa0044773d}\

    For IBMDADB2:
    First navigate to HKEY_CLASSES_ROOT\IBMDADB2 to find the CLSID, then navigate to HKEY_CLASSES_ROOT\CLSID and locate the matching CLSID

    - Modify the DWORD value for OLEDB_SERVICES to: 0xfffffffc, and then click OK.
  • For 32-bit applications:

  • - Disable OLE DB connection pooling using the registry variable below:
    - Start the Registry Editor (Regedit.exe).
    - Navigate to the following registry location depending on the OLEDB provider in use:

    For MSDASQL:
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{c8b522cb-5cf3-11ce-de5-00aa0044773d}

    For IBMDADB2:
    First navigate to HKEY_CLASSES_ROOT\IBMDADB2 to find the CLSID, then navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID and locate the matching CLSID

    - Modify the DWORD value for OLEDB_SERVICES to: 0xfffffffc, and then click OK.

Related Information

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Programming Interface - Other","Platform":[{"code":"PF033","label":"Windows"}],"Version":"9.7;9.5;10.1;10.5","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21689992