R
rajendrak
Problem Summary:
'Failed to enlist on calling object's transaction' error for an MSDTC
application on 64-bit Windows and 32-bit ODBC driver dll.
System Details:
64-bit Windows OS (Windows XP or Windows Vista)
Running a 32-bit database test application with 32-bit ODBC drivers
involving 'Transactions'.
The problem is NOT observed if the same test application is run as x64 with
64-bit ODBC drivers.
Problem Description:
1) I have a 'custom ODBC driver' that I am testing with a test application.
The test application connects using the ODBC DSN. The connection to the DB
happens as part of a 'Transaction'
2) The connection.Open() operation fails with the below exception:
Update: ERROR [25000] [Microsoft][ODBC Driver Manager] Failed to enlist on
calling object's transaction
ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr
failed
Error: (0): [Microsoft][ODBC Driver Manager] Failed to enlist on calling
object's transaction
Error: (0): [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
3) This happens only while using the ODBC 32-bit drivers. It works perfectly
fine with the 64-bit ODBC drivers. Even with ODBC 32-bit if the connection is
NOT part of a 'Transaction', it works perfectly fine.
4) I have verified for the presence of the registry key for the ODBC DLL
under HKLM/Software/Microsoft/MSDTC/XADLL.
5) Most suggestions provided in other forums do not work for me.
Questions:
1) It is observed that MSDTC.exe accesses all registry keys from under
HKLM/Software/Microsoft and not from under Wow6432Node.
2) Does MSDTC on 64-bit Windows, support 32-bit ODBC drivers/applications?
3) I am manually creating the registry entries under XADLL. I have also
verified that it gets accessed by MSDTC.exe (verified using procmon). Are
there any other registry entries that are needed to fix this problem?
4) In the ODBC driver code I noticed, IDtcXaHelperFactory::Create returns
E_FAIL (The attempt to create the XA Helper object failed due to a bad
installation of the DTC.)
Thanks!
'Failed to enlist on calling object's transaction' error for an MSDTC
application on 64-bit Windows and 32-bit ODBC driver dll.
System Details:
64-bit Windows OS (Windows XP or Windows Vista)
Running a 32-bit database test application with 32-bit ODBC drivers
involving 'Transactions'.
The problem is NOT observed if the same test application is run as x64 with
64-bit ODBC drivers.
Problem Description:
1) I have a 'custom ODBC driver' that I am testing with a test application.
The test application connects using the ODBC DSN. The connection to the DB
happens as part of a 'Transaction'
2) The connection.Open() operation fails with the below exception:
Update: ERROR [25000] [Microsoft][ODBC Driver Manager] Failed to enlist on
calling object's transaction
ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr
failed
Error: (0): [Microsoft][ODBC Driver Manager] Failed to enlist on calling
object's transaction
Error: (0): [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
3) This happens only while using the ODBC 32-bit drivers. It works perfectly
fine with the 64-bit ODBC drivers. Even with ODBC 32-bit if the connection is
NOT part of a 'Transaction', it works perfectly fine.
4) I have verified for the presence of the registry key for the ODBC DLL
under HKLM/Software/Microsoft/MSDTC/XADLL.
5) Most suggestions provided in other forums do not work for me.
Questions:
1) It is observed that MSDTC.exe accesses all registry keys from under
HKLM/Software/Microsoft and not from under Wow6432Node.
2) Does MSDTC on 64-bit Windows, support 32-bit ODBC drivers/applications?
3) I am manually creating the registry entries under XADLL. I have also
verified that it gets accessed by MSDTC.exe (verified using procmon). Are
there any other registry entries that are needed to fix this problem?
4) In the ODBC driver code I noticed, IDtcXaHelperFactory::Create returns
E_FAIL (The attempt to create the XA Helper object failed due to a bad
installation of the DTC.)
Thanks!