Help and Support
 

powered byLive Search

You may receive a 7391 error message in SQL Server 2000 when you run a distributed transaction against a linked server after you install Windows Server 2003 or Windows XP Service Pack 2

Article ID:839279
Last Review:July 15, 2005
Revision:3.5
On This Page

SYMPTOMS

When you run a distributed transaction against an instance of SQL Server, you may receive an error message that is similar to the following:

Server: Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction. [OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ] OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].


This problem may occur when one of following conditions is true:
Microsoft Windows Server 2003 or Microsoft Windows XP Service Pack 2 (SP2) is installed on the computer that initiates the distributed transaction.
Microsoft Windows Server 2003 or Microsoft Windows XP SP2 is installed on the remote computer that is running Microsoft SQL Server 2000, and that computer is linked to the computer that initiates the distributed transaction.

Back to the top

CAUSE

This problem occurs because of one or more of the following reasons:
Microsoft Distributed Transaction Coordinator (MSDTC) is disabled for network transactions.
Windows Firewall is enabled on the computer. By default, Windows Firewall blocks the Microsoft Distributed Transaction Coordinator (MSDTC) program.

Note This problem may occur even when Windows Firewall is turned off.

Back to the top

WORKAROUND

Important This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 (http://support.microsoft.com/kb/322756/) How to back up and restore the registry in Windows


To work around this problem, follow these steps on the computer that Windows Server 2003 or Windows XP SP2 is installed on:
1.Make sure that the Log On As account for the MSDTC service is the Network Service account. To do this, follow these steps:
a. Click Start, and then click Run.
b. In the Run dialog box, type Services.msc, and then click OK.
c. In the Services window, locate the Distributed Transaction Coordinator service under Name in the right pane.
d. Under the Log On As column, see whether the Log On As account is Network Service or Local System.

If the Log On As account is Network Service, go to step 2. If the Log On As account is Local System account, continue with these steps.
e. Click Start, and then click Run.
f. In the Run dialog box, type cmd, and then click OK.
g. At the command prompt, type Net stop msdtc to stop the MSDTC service.
h. At the command prompt, type Msdtc –uninstall to remove MSDTC.
i. At the command prompt, type regedit to open Registry Editor.
j. In Registry Editor, locate the following key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTCregistry key.

Delete this key.
k. Quit Registry Editor.
l. At the command prompt, type Msdtc –install to install MSDTC.
m. At the command prompt, type Net start msdtc to start the MSDTC service.

Note that the Log On As account for the MSDTC service is set to Network Service account.
2.Enable MSDTC to allow the network transaction. To do this, follow these steps:
a. Click Start, and then click Run.
b. In the Run dialog box, type dcomcnfg.exe, and then click OK.
c. In the Component Services window, expand Component Services, expand Computers, and then expand My Computer.
d. Right-click My Computer, and then click Properties.
e. In the My Computer Properties dialog box, click Security Configuration on the MSDTC tab.
f. In the Security Configuration dialog box, click to select the Network DTC Access check box.
g. To allow the distributed transaction to run on this computer from a remote computer, click to select the Allow Inbound check box.
h. To allow the distributed transaction to run on a remote computer from this computer, click to select the Allow Outbound check box.
i. Under the Transaction Manager Communication group, click to select the No Authentication Required option.
j. In the Security Configuration dialog box, click OK.
k. In the My Computer Properties dialog box, click OK.
3. Configure Windows Firewall to include the MSDTC program and to include port 135 as an exception. To do this, follow these steps:
a. Click Start, and then click Run.
b. In the Run dialog box, type Firewall.cpl, and then click OK
c. In Control Panel, double-click Windows Firewall.
d. In the Windows Firewall dialog box, click Add Program on the Exceptions tab.
e. In the Add a Program dialog box, click the Browse button, and then locate the Msdtc.exe file. By default, the file is stored in the <Installation drive>:\Windows\System32 folder.
f. In the Add a Program dialog box, click OK.
g. In the Windows Firewall dialog box, click to select the msdtc option in the Programs and Services list.
h. Click Add Port on the Exceptions tab.
i. In the Add a Port dialog box, type 135 in the Port number text box, and then click to select the TCP option.
j. In the Add a Port dialog box, type a name for the exception in the Name text box, and then click OK.
k. In the Windows Firewall dialog box, select the name that you used for the exception in step j in the Programs and Services list, and then click OK.

Back to the top

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Back to the top

MORE INFORMATION

Steps to reproduce the behavior

1.Log on to a computer that has Windows Server 2003 or Windows XP SP2 installed.
2.Start Query Analyzer.
3.Add a remote computer that is running Microsoft SQL Server 2000 as a linked server. To do this, run the following Transact-SQL statement in Query Analyzer:
EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'
GO

Note Replace remote_server with the name of the computer that must be configured as the linked server.
4.Run a distributed transaction between this computer and the remote computer. To do this, run the following Transact-SQL statement in Query Analyzer:
SET xact_abort ON 
GO
USE  pubs
GO
BEGIN DISTRIBUTED TRANSACTION
SELECT  *  FROM <remote_server>.pubs.dbo.authors
COMMIT TRAN
GO
You may receive the error message that is mentioned in the "Symptoms" section.

Back to the top

REFERENCES

For more information about configuring Windows XP Service Pack 2 for use with SQL Server 2000, click the following article number to view the article in the Microsoft Knowledge Base:
841249 (http://support.microsoft.com/kb/841249/) How to configure Windows XP Service Pack 2 for use with SQL Server

Back to the top


APPLIES TO
Microsoft SQL Server 2000 Standard Edition
Windows XP Embedded
Microsoft Windows Server 2003, Standard Edition (32-bit x86)
Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)

Back to the top

Keywords: 
kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb KB839279

Back to the top

Article Translations

 

Related Support Centers

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.