Wenn Sie eine verteilte Transaktion für einen Verbindungsserver ausführen, nachdem Sie Windows Server 2003 oder Windows XP Service Pack 2 installiert haben, erhalten Sie unter Umständen eine Fehlermeldung 7391 in SQL Server 2000

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 839279 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
839279 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
Wichtig: Dieser Artikel enthält Informationen zum Bearbeiten der Registrierung. Bevor Sie die Registrierung bearbeiten, vergewissern Sie sich bitte, dass Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Erstellen einer Sicherungskopie, zum Wiederherstellen und Bearbeiten der Registrierung finden Sie im folgenden Artikel der Microsoft Knowledge Base:
256986 Beschreibung der Microsoft Windows-Registrierung
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie eine verteilte Transaktion für eine Instanz von SQL Server ausführen, wird möglicherweise eine Fehlermeldung wie die folgende angezeigt:

Server: Msg 7391, Ebene 16, Status 1, Zeile 1
Die Operation konnte nicht ausgeführt werden, da der OLE DB-Provider 'SQLOLEDB' keine verteilte Transaktion beginnen konnte. [Der OLE/DB-Provider hat die folgende Meldung zurückgegeben: Die neue Transaktion kann nicht in den angegebenen Transaktionskoordinator eingeschrieben werden.] (OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator.) OLE DB-Fehlertrace [OLE/DB-Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction gab 0x8004d00a zurück]. (OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].)


Dieses Problem kann auftreten, wenn eine der folgenden Bedingungen erfüllt ist:
  • Microsoft Windows Server 2003 oder Microsoft Windows XP Service Pack 2 (SP2) ist auf dem Computer installiert, der die verteilte Transaktion initiiert.
  • Microsoft Windows Server 2003 oder Microsoft Windows XP SP2 ist auf dem Remotecomputer, auf dem Microsoft SQL Server 2000 ausgeführt wird, und auf dem Computer installiert, der mit dem Computer verbunden ist, der die verteilte Transaktion initiiert.

Ursache

Dieses Problem kann aus einem oder mehreren der folgenden Gründe auftreten:
  • Der Microsoft Distributed Transaction Coordinator (MSDTC) ist für Netzwerktransaktionen deaktiviert.
  • Auf dem Computer ist die Windows-Firewall aktiviert. Die Windows-Firewall blockiert standardmäßig den Microsoft Distributed Transaction Coordinator (MSDTC).

    Hinweis: Dieses Problem kann selbst dann auftreten, wenn die Windows-Firewall deaktiviert ist.

Abhilfe

Warnung: Durch die falsche Bearbeitung der Registrierung mithilfe des Registrierungs-Editors oder einer anderen Methode können schwerwiegende Probleme verursacht werden. Diese Probleme können eine Neuinstallation des Betriebssystems erforderlich machen. Microsoft kann nicht garantieren, dass Probleme, die von einer falschen Verwendung des Registrierungseditors herrühren, behoben werden können. Benutzen Sie den Registrierungseditor auf eigene Verantwortung.

Gehen Sie auf dem Computer, auf dem Windows Server 2003 oder Windows XP SP2 installiert ist, folgendermaßen vor, um das Problem zu umgehen:
  1. Vergewissern Sie sich, dass das Konto Anmelden als für den MSDTC-Dienst das Netzwerkdienst-Konto ist. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie auf Start und anschließend auf Ausführen.
    2. Geben Sie in das Feld Öffnen den Dateinamen Services.msc ein, und klicken Sie auf OK.
    3. Suchen Sie im Fenster Dienste unter Name im rechten Fensterbereich nach dem Dienst Distributed Transaction Coordinator.
    4. Überprüfen Sie, ob in der Spalte Anmelden als der Eintrag Netzwerkdienst oder der Eintrag LocalSystem zu finden ist.

      Falls unter Anmelden als die Option Netzwerkdienst angegeben ist, setzen Sie mit Schritt 2 fort. Falls unter Anmelden als die Option LocalSystem angegeben ist, gehen Sie folgendermaßen vor:
    5. Klicken Sie auf Start und anschließend auf Ausführen.
    6. Geben Sie cmd in das Feld Öffnen ein, und klicken Sie auf OK.
    7. Geben Sie Net stop msdtc in die Eingabeaufforderung ein, um den MSDTC-Dienst zu beenden.
    8. Geben Sie Msdtc ?uninstall in die Eingabeaufforderung ein, um MSDTC zu entfernen.
    9. Geben Sie regedit in die Eingabeaufforderung ein, um den Registrierungs-Editor zu starten.
    10. Gehen Sie im Registrierungs-Editor zum folgenden Schlüssel:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC


      Löschen Sie diesen Registrierungsschlüssel.
    11. Beenden Sie den Registrierungs-Editor.
    12. Geben Sie Msdtc ?install in die Eingabeaufforderung ein, um MSDTC zu installieren.
    13. Geben Sie Net start msdtc in die Eingabeaufforderung ein, um den MSDTC-Dienst zu starten.

      Beachten Sie, dass das Konto Anmelden als für den MSDTC-Dienst jetzt das Konto Netzwerkdienst ist.
  2. Aktivieren Sie MSDTC, um die Netzwerktransaktion zu ermöglichen. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie auf Start und anschließend auf Ausführen.
    2. Geben Sie in das Feld Öffnen die Zeichenfolge dcomcnfg.exe ein, und klicken Sie auf OK.
    3. Erweitern Sie im Fenster Komponentendienste die Option Komponentendienste, erweitern Sie Computer, und erweitern Sie dann die Option Arbeitsplatz.
    4. Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, und klicken Sie anschließend auf Eigenschaften.
    5. Klicken Sie auf der Registerkarte MSDTC im Dialogfeld Eigenschaften von Arbeitsplatz auf Sicherheitskonfiguration.
    6. Aktivieren Sie im Dialogfeld Sicherheitskonfiguration das Kontrollkästchen DTC-Netzwerkzugriff.
    7. Um die Ausführung der verteilten Transaktion auf diesem Computer von einem Remotecomputer aus zu ermöglichen, aktivieren Sie das Kontrollkästchen Eingehende zulassen.
    8. Um die Ausführung der verteilten Transaktion auf einem Remotecomputer von diesem Computer aus zu ermöglichen, aktivieren Sie das Kontrollkästchen Ausgehende zulassen.
    9. Aktivieren Sie unter der Gruppe Transaktions-Manager-Kommunikation die Option Keine Authentifizierung erforderlich.
    10. Klicken Sie im Dialogfeld Sicherheitskonfiguration auf OK.
    11. Klicken Sie im Dialogfeld Eigenschaften von Arbeitsplatz auf OK.
  3. Konfigurieren Sie die Windows-Firewall so, dass das MSDTC-Programm und Port 135 als Ausnahmen anerkannt werden. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie auf Start und anschließend auf Ausführen.
    2. Geben Sie im Dialogfeld Öffnen den Befehl Firewall.cpl ein, und klicken Sie anschließend auf OK.
    3. Doppelklicken Sie in der Systemsteuerung auf Windows-Firewall.
    4. Klicken Sie im Dialogfeld Windows-Firewall auf der Registerkarte Ausnahmen auf Programm hinzufügen.
    5. Klicken Sie im Dialogfeld Programm hinzufügen auf die Schaltfläche Durchsuchen, und gehen Sie dann zu der Datei "Msdtc.exe". Standardmäßig ist diese Datei im Ordner <Installationslaufwerk>:\Windows\System32 gespeichert.
    6. Klicken Sie im Dialogfeld Programm hinzufügen auf OK.
    7. Klicken Sie im Dialogfeld Windows-Firewall in der Liste Programme und Dienste auf msdtc.
    8. Klicken Sie auf der Registerkarte Ausnahmen auf Port.
    9. Geben Sie im Dialogfeld Port hinzufügen die Nummer 135 in das Feld Portnummer ein, und klicken Sie dann auf die Option TCP.
    10. Geben Sie im Dialogfeld Port hinzufügen einen Namen für die Ausnahme in das Feld Name ein, und klicken Sie dann auf OK.
    11. Wählen Sie im Dialogfeld Windows-Firewall den Namen aus, den Sie in Schritt j für die Ausnahme in der Liste Programme und Dienste verwendet haben, und klicken Sie danach auf OK.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Melden Sie sich bei einem Computer an, auf dem Windows Server 2003 oder Windows XP SP2 installiert ist.
  2. Starten Sie den Query Analyzer.
  3. Fügen Sie einen Computer, auf dem Microsoft SQL Server ausgeführt wird, als Verbindungsserver hinzu. Führen Sie hierzu die folgende Transact-SQL-Anweisung im Query Analyzer aus:
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'
    GO

    Hinweis: Ersetzen Sie die Angabe Remoteserver durch den Namen des Computers, der als Verbindungsserver konfiguriert werden muss.
  4. Führen Sie eine verteilte Transaktion zwischen diesem Computer und dem Remotecomputer aus. Führen Sie hierzu die folgende Transact-SQL-Anweisung im Query Analyzer aus:
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    Ihnen wird jetzt eventuell die Fehlermeldung aus dem Abschnitt "Problembeschreibung" angezeigt.

Informationsquellen

Weitere Informationen zum Konfigurieren von Windows XP Service Pack 2 auf die Verwendung in Verbindung mit SQL Server 2000 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
841249 So konfigurieren Sie Windows XP Service Pack 2 (SP2) für die Verwendung mit einem SQL Server

Eigenschaften

Artikel-ID: 839279 - Geändert am: Mittwoch, 4. Januar 2006 - Version: 3.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft 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)
Keywords: 
kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb KB839279
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com