Summary:
Repeatedly calling a method on an MTS object that indirectly opens ADO connections to an Oracle 8.1.6 database causes ‘Failed to enlist global transaction with DTC’ error.
Environment:
MDAC 2.5 (SP1);
Oracle ODBC driver 8.1.6
Oracle Manager for MTS;
Oracle8i Enterprise Edition 8.1.6.1.0;
PL/SQL 8.1.6.1.0;
TNS for 32-bit Windows: 8.1.6.0.0;
NT 4 (SP6a).
Details:
I have two components (A and B) created using VB 6 (SP3) which run under MTS and are configured such that each component ‘Requires a transaction’. Component A creates a module level instance of component B (object B), using the CreateInstance method of the context object. Component A repeatedly calls the same method (X) on object B in a loop that should result in between 60 and 180 calls to method X. However, on (and always on) the fourth call to method X, the following error is raised:
[Oracle][ODBC]Failed to enlist global transaction with DTC
-2147168246 (8004D00A)
Component A uses a module level ADO connection object that is kept open during processing (via a single public method on component A), and calls stored procedures to select from and update data in an Oracle database. Component B calls on other MTS components that open their own ADO connections to select data from and insert data into the database. All of these called components are configured such that each ‘Requires a transaction’. The error is raised during a method call on one of the components (C) called by Component B.
If I configure Component B in MTS such that it ‘Requires a new transaction’, then the above error does not occur. However, I require that all of the processing is contained in a single transaction.
Does anybody have any suggestions?
Repeatedly calling a method on an MTS object that indirectly opens ADO connections to an Oracle 8.1.6 database causes ‘Failed to enlist global transaction with DTC’ error.
Environment:
MDAC 2.5 (SP1);
Oracle ODBC driver 8.1.6
Oracle Manager for MTS;
Oracle8i Enterprise Edition 8.1.6.1.0;
PL/SQL 8.1.6.1.0;
TNS for 32-bit Windows: 8.1.6.0.0;
NT 4 (SP6a).
Details:
I have two components (A and B) created using VB 6 (SP3) which run under MTS and are configured such that each component ‘Requires a transaction’. Component A creates a module level instance of component B (object B), using the CreateInstance method of the context object. Component A repeatedly calls the same method (X) on object B in a loop that should result in between 60 and 180 calls to method X. However, on (and always on) the fourth call to method X, the following error is raised:
[Oracle][ODBC]Failed to enlist global transaction with DTC
-2147168246 (8004D00A)
Component A uses a module level ADO connection object that is kept open during processing (via a single public method on component A), and calls stored procedures to select from and update data in an Oracle database. Component B calls on other MTS components that open their own ADO connections to select data from and insert data into the database. All of these called components are configured such that each ‘Requires a transaction’. The error is raised during a method call on one of the components (C) called by Component B.
If I configure Component B in MTS such that it ‘Requires a new transaction’, then the above error does not occur. However, I require that all of the processing is contained in a single transaction.
Does anybody have any suggestions?