INFO: Failed to Enlist on Calling Object's Transaction
ID: Q191168
 
  |  
 
 
The information in this article applies to: 
- 
Microsoft Transaction Server, versions  1.0, 2.0
  
 
IMPORTANT: This article contains information about editing the registry.
Before you edit the registry, make sure you understand how to restore it if
a problem occurs. For information about how to do this, view the "Restoring
the Registry" Help topic in Regedit.exe or the "Restoring a Registry Key"
Help topic in Regedt32.exe.
 SUMMARY
What does the message "Failed to Enlist on calling object's transaction"
mean?
 
 
The ODBC Driver Manager reports this error when a transactional Microsoft
Transaction Server component attempts to open a database connection and the
Driver Manager cannot enlist the database connection in the current
transaction. The ODBC Driver Manager enlists the database connection in the
current transaction by calling the ODBC driver's SQLSetConnectionAttr
(SQL_ATTR_ENLIST_IN_DTC) procedure. The ODBC Driver Manager displays the
"Failed to Enlist" message if the call to the SQLSetConnectionAttr
procedure fails. 
 
For more information see the following white paper. 
 
ftp://ftp.microsoft.com/bussys/viper/Docs/ 
 
Using Oracle Databases with Microsoft Transaction Server Version 2.12 (Oracle and MTS2.12.htm)
 
 MORE INFORMATIONWhen Using Microsoft SQL Server
If this error occurs when your transactional Microsoft Transaction Server
component is accessing a Microsoft SQL Server database, check the
following:
- Ensure that the Microsoft Distributed Transaction Coordinator (MS DTC)
   Service is started.
 
 
   Make certain that the MS DTC Service is started on the system on which
   your Microsoft Transaction Server components are deployed. If your
   Microsoft Transaction Server application is accessing a Microsoft SQL
   Server database on a remote system, ensure that the MS DTC Service is
   started on that system also. This is frequently the cause of the "Failed
   to Enlist Error."
 
 
   Perform the following steps to check the status of the MS DTC Service: 
 
- On the Start menu, point to Settings, and then click Control Panel.
 
 
 - Double-click the Services icon.
 
 
 - Scroll through the Services list and confirm that the Status of the
      MS DTC service is Started. If the MS DTC Status is blank (not
      started), you can start it by selecting MSDTC and then clicking
      Start.
 
 
  
 
 
 - Check Your Network Configuration.
 
 
   When a transactional Microsoft Transaction Server component on one
   system accesses a SQL Server database on another system, MS DTC
   propagates the DTC transaction from the first or primary system to the
   secondary system. Transaction propagation can only occur if the DTC
   process on the primary system can communicate with the DTC process on
   the secondary system. The DTC processes establish remote procedure call
   (RPC) connections in both directions, which means that a network
   configuration problem on either system can prevent the DTC processes
   from successfully communicating with one another. This causes ODBC to
   return a "Failed to Enlist" error.
 
 
   Often the following MS DTC event will be recorded in the Windows NT
   Application event log:
Primary: Session Bind Failed. Primary Timed Out while waiting for the
      secondary to Bind.
 
   This error indicates that DTC on the Microsoft Transaction Server
   computer was able to bind to DTC on the SQL Server, but DTC on the SQL
   Server could not perform the reverse bind to the Microsoft Transaction
   Server computer. 
 
   If this occurs, check your network configuration using Pingtest.bat as
   follows: 
 
- Use a text editor (such as Notepad) to create a file named
      Pingtest.bat. Copy the following batch file commands into it.
   echo off
   REM Usage pingtest OtherMachineName
   REM Must use a machine name and NOT an IP address
   ping -n 1 %computername%
   ping -n 1 %1
   ipconfig /all
   echo on  
      The batch file uses %computername% to display the local IP address.
      It then displays the IP address of the remote computer you specify in
      the command line when you run the batch file. When you invoke the
      batch file, you must specify the name of the remote computer and not
      its IP address. Using the machine name forces ping to resolve the
      machine name exactly the same as MS DTC does when it binds to the
      remote MS DTC computer. 
 
 - Run Pingtest.bat on the Microsoft Transaction Server computer to
      determine if you can ping the SQL Server computer by name. Capture
      the output from the batch file in a text file. For example, if
      Microsoft Transaction Server is running on computer A and SQL Server
      is running on computer B, use the following command:
         
Pingtest B > AResults.txt 
  
 
 -   Run Pingtest.bat on the SQL Server computer to determine if you can
      ping the Microsoft Transaction Server computer by name. Capture the
      output from the batch file in a text file. For example, if Microsoft
      Transaction Server is running on computer A and SQL Server is running
      on computer B, use the following command:
         
Pingtest A > BResults.txt 
  
 
 - Examine the contents of the two text files to ensure that the two
      computers can ping one another successfully.
 
 
      If you use Hosts or Lmhosts files for TCP/IP name resolution, check
      these files very carefully to ensure that they contain valid computer
      name to IP address mappings. To do this, check the Hosts and the
      Lmhosts files in the Winnt40\System32\Drivers\Etc directory on both
      The Microsoft Transaction Server computer and the SQL Server
      computer. Frequently, the file on one system will be correct, while
      that on the other system is incorrect. 
 
  
 
 
 - Configure the SQL Server to use TCP/IP rather than Named Pipes.
 
 
   Microsoft strongly recommends that you configure the SQL Server to use
   TCP/IP rather than Named Pipes. Using Named Pipes can result in
   Intermittent "Failed to Enlist" errors. 
 
- On the Start menu, point to Programs, point to Microsoft SQL Server
      6.5, and then click SQL Client Configuration Utility.
 
 
 - Click the Net Library tab.
 
 
 - In the Default Network list, select TCP/IP Sockets.
 
 
 - Click Done.
 
 
  
 
 
 - Check Transaction Timeout.
 
 
   The component's transaction may have aborted due to transaction time-out
   before the database enlistment completed. You can increase the
   transaction time-out value through the Microsoft Transaction Server
   Explorer. Use the following steps to increase the time-out value: 
 
- Start the Microsoft Transaction Server Explorer and select Computers.
 
 
 - Right-click the computer where the transaction was initiated and
      click Properties.
 
 
 - Click the Options tab and specify a longer time-out value.
 
 
  
   This is unlikely to be the problem unless your transactions take an
   unusually long time. However, it may be helpful to temporarily increase
   the time-out value to eliminate this as a potential source of trouble.
 
 
  
When Using Oracle
If this error occurs when your transactional Microsoft Transaction Server
component is accessing an Oracle database, please check the following:
- Ensure that the MS DTC Service is started using the following steps to
   check its status:
 
 
- On the Start menu, point to Settings, and then click Control Panel.
 
 
 - Double-click the Services icon.
 
 
 - Scroll through the Services list and confirm that the Status of the
      MS DTC service is Started. If the MS DTC Status is blank (not
      started), you can start it by selecting MSDTC and then clicking
      the Start button.
 
 
  
 
 
 - Install the Oracle 7.3.4 release on the Microsoft Transaction Server
   computer.
   Ensure that Oracle 7.3.4 Client software is installed on the system that
   contains the Microsoft Transaction Server components. Note that it is
   common to upgrade the Oracle software on the system that contains the
   Oracle database but fail to upgrade the Oracle software on the system
   that contains the Microsoft Transaction Server components. You must
   upgrade the Oracle software on the client system.
 
 
 - Install the Oracle 7.3.4 release on the Windows NT Oracle Database
   Server System.
 
 
   If the Microsoft Transaction Server application accesses an Oracle
   database on a Windows NT system, ensure that the Oracle 7.3.4 release is
   installed on that system. 
 
 - Install the latest Oracle release on the UNIX Oracle Database Server
   System.
 
 
   If the Oracle database is running on a UNIX system, ensure that the
   latest Oracle 7.3 patch release for that UNIX platform is installed on
   that system. You must check with Oracle Customer Support to determine if
   an Oracle 7.3 patch release is required for your UNIX platform. Explain
   that you are going to access your Oracle database on UNIX using the XA
   transaction support included in the Oracle 7.3.4 release for Microsoft
   Windows NT.
 
 
 - Use the Microsoft Oracle ODBC driver 2.0.
 
 
   Make certain that Microsoft Transaction Server is using the Microsoft
   Oracle ODBC driver version 2.0. No other Oracle ODBC driver supports
   Microsoft Transaction Server transactions.
 
 
   The Microsoft Oracle ODBC driver version 2.0 (Msorcl32.dll) that is
   installed by the Windows NT 4.0 Option Pack is version 02.73.7283.1. You
   may use this or any later version of the driver.
 
 
   If you wish to access an Oracle database, use the Microsoft Oracle ODBC
   driver version 2.0, even if you do not require transaction support. The
   version 2.0 driver offers better performance than the version 1.0 that
   it replaced. The version 1.0 driver serialized all activity at the
   driver level; requests were single-threaded through the driver. The
   version 2.0 driver serializes all activities at the connection level;
   this allows different database connections to be used in parallel.
 
 
 - Accessing an Oracle8 database.
 
 
   Your transactional Microsoft Transaction Server components may access an
   Oracle8 database on Windows NT. However, you must install Microsoft
   Transaction Server on one Windows NT computer and Oracle8 on another
   Windows NT computer. Microsoft Transaction Server and Oracle8 cannot
   coexist on a single computer. This restriction exists because the
   Microsoft Oracle ODBC driver is only capable of calling Oracle's 7.3 OCI
   client interfaces. It does not work with Oracle8 client interfaces. You
   must install the latest Oracle 7.3 client software on the system
   containing the Microsoft Transaction Server components.
 
 
   It may be possible to eliminate this restriction. Microsoft is
   investigating this issue, but has only tested Microsoft Transaction
   Server with Oracle8 when the two are on separate systems.
 
 
   The Oracle8 documentation discusses how to install and configure Oracle8
   for coexistence with Oracle7 client software. For more information
   consult "Appendix F" in the following Oracle publication:
Oracle 8[ASCII 153] 
      Oracle Networking Products 
      Release 8.0 for Windows Platforms 
      Getting Started
  
 
 - Ensure that Oracle XA support is enabled.
 
 
   Check to be sure that Oracle XA transaction support has been enabled.
   For more information, refer to the section titled "Enabling Oracle XA
   Transaction Support" in the "Using Oracle Databases with Microsoft
   Transaction Server" white paper.
 
 
 - Ensure that Oracle numeric characters are configured correctly.
 
 
   WARNING: Using Registry Editor incorrectly can cause serious problems
   that may require you to reinstall your operating system. Microsoft
   cannot guarantee that problems resulting from the incorrect use of
   Registry Editor can be solved. Use Registry Editor at your own risk.
 
 
   For information about how to edit the registry, view the "Changing Keys
   And Values" Help topic in Registry Editor (Regedit.exe) or the "Add and
   Delete Information in the Registry" and "Edit Registry Data" Help topics
   in Regedt32.exe. Note that you should back up the registry before you
   edit it.
 
 
   Customers who have systems located outside the United States may need to
   configure Oracle numeric character support. In the Windows NT registry,
   locate the following registry key
 
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle
 
   and add this entry:
"NLS_NUMERIC_CHARACTERS"=".," 
     NOTE: The characters inside the quoted string above are a period and
   a comma, in that order.
 
 
 - Ensure that Oracle is configured with adequate connections.
 
 
   If you want to create more than a few dozen connections to an Oracle
   database, ensure that Oracle is configured to support additional
   database connections. For more information, refer to the section titled
   "Configuring Oracle to Support a Large Number of Connections" in the
   "Using Oracle Databases with Microsoft Transaction Server" white paper.
 
 
 - Ensure that you have a connection to the Oracle database if you use
   Oracle Integrated Security.
 
 
   If you use Oracle Integrated Security, make certain that MS DTC is
   running under a login ID and password that is authorized to connect to
   the Oracle database. For more information, refer to the section titled
   "Configuring Integrated Security" in the "Using Oracle Databases with
   Microsoft Transaction Server" white paper.
 
 
 - Run the TestOracleXAConfig program.
 
 
   Run the TestOracleXAConfig program to ensure that you can successfully
   connect to the Oracle database without using Microsoft Transaction
   Server. For more information, refer to the section titled "Testing
   Installation and Configuration of MTS Support for Oracle" in the "Using
   an Oracle Database with Microsoft Transaction Server" document.
 
 
 - Run the Sample Bank program.
 
 
   Run the Sample Bank program to ensure that you can successfully connect
   to the Oracle database from a Microsoft Transaction Server program. For
   more information, refer to the section titled "Validating Oracle
   Installation and Configuration Using the Sample Bank Application" in the
   "Using Oracle Databases with Microsoft Transaction Server" white paper.
 
 
 - Check the Oracle trace files.
 
 
   The Oracle trace files contain extended error information which can help
   you diagnose problems. To capture Oracle trace information, first find
   and delete all existing Oracle trace files on the system. These files
   have names ending with the .trc extension. After you delete all existing
   trace files, run the failing Microsoft Transaction Server component and
   examine the contents of the Oracle trace files.
 
 
 - Check Transaction time-out.
 
 
   Consider whether the Microsoft Transaction Server component's
   transaction may have ended before the database enlistment completed.
   This may occur if the transaction time-out expires before the Oracle
   database enlistment completes.
 
 
   You can increase the transaction time-out value through the Microsoft
   Transaction Server Explorer. To do this, use these steps:
 
 
- Run Microsoft Transaction Server Explorer and select Computers.
 
 
 - Right-click the computer where the transaction was initiated and
      click Properties on the shortcut menu.
 
 
 - Click the Options tab and specify a longer time-out value.
 
 
  
   This is unlikely to be the problem unless your transactions last for
   more than one minute. However, it may be helpful to temporarily increase
   the time-out value to eliminate this as a potential source of trouble.
 
 
  
What to Do If You Still Get This Error
If you still get this error after doing everything described here, you
should report the error to the Microsoft Product Support organization.
Please supply the following information with your problem report.
- Describe the problem.
   Does the "Failed to Enlist" error occur every time you attempt to use
   Microsoft Transaction Server transactions or is the failure
   intermittent? If the failure is intermittent, how often does it occur?
 
 
 - Describe your application and system configuration.
 
 
- Describe the system the Microsoft Transaction Server application
      components are installed on. If you are using an Oracle database,
      provide the version of both the Oracle client software and the
      Microsoft Oracle ODBC driver are you using.
 
 
 - Are you using a Microsoft SQL database or an Oracle database? Is the
      database on the same computer as the Microsoft Transaction Server
      application components or is it on a separate computer? If you are
      using an Oracle database, what kind of system is the Oracle database
      installed on and what version of Oracle software is installed?
 
 
 - What network transport are you using: TCP/IP, Named Pipes, IPX/SPX,
      and so forth? What name service are you using: WINS, DNS, Host files,
      and so on?
 
 
  
 
 
 - Does the TestOracleXAConfig program run?
 
 
   If you are using an Oracle database, try to run the TestOracleXAConfig
   program. If this program fails, the problem lies with Oracle. Please
   report the problem to Oracle Customer Support.
 
 
 - Does the Sample Bank program run?
 
 
   Try to run the Sample Bank program with Microsoft SQL Server. If you are
   using an Oracle database, does the Sample Bank application run with
   Oracle? If not, what error are you experiencing?
 
 
 - What errors are reported in the Oracle trace files?
 
 
   If you are using an Oracle database, what information is present in the
   Oracle trace files? To capture this information, first find and deleting
   all existing Oracle trace files on the system. These files have names
   ending with the .trc extension. After you delete all existing trace
   files, run the failing Microsoft Transaction Server component and
   provide Microsoft with the contents of the Oracle trace files.
 
 
 - What errors are reported in the Windows NT event log?
 
 
   Check the Windows NT event log and report all DTC events that were
   recorded at or near the time of the failure.
 
 
 - Are you using Oracle Integrated Security?
 
 
   Report whether you are using Oracle Integrated Security.
 
 
 - What is the transaction time-out value?
 
 
   Advise what transaction time-out value is configured in Microsoft
   Transaction Server. 
 
  
Additional query words: 
prodtranssrv  
Keywords          : 
Version           : winnt:1.0,2.0
Platform          : winnt 
Issue type        : kbinfo  
 |