Frage

Ist das überhaupt eine berechtigte Frage?Ich habe eine .NET-Windows-App, die MSTDC verwendet und eine Ausnahme auslöst:

System.Transactions.TransactionManagerCommunicationException:Der Netzwerkzugriff für Distributed Transaction Manager (MSDTC) wurde deaktiviert.Bitte aktivieren Sie DTC für den Netzwerkzugriff in der Sicherheitskonfiguration für MSDTC mithilfe des Verwaltungswerkzeugs für Komponentendienste.Der Transaktionsmanager hat seine Unterstützung für Remote-/Netzwerktransaktionen deaktiviert.(Ausnahme von HRESULT:0x8004D024) at System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim)....

ich folgte die Kbalertz-Anleitung zum Aktivieren von MSDTC auf dem PC, auf dem die App installiert ist, aber der Fehler tritt weiterhin auf.

Ich habe mich gefragt, ob das ein Datenbankproblem ist?Wenn ja, wie kann ich das Problem lösen?

Keine korrekte Lösung

Andere Tipps

Verwenden Sie dies für Windows Server 2008 R2 und Windows Server 2012 R2

  1. Klicken Start, klicken Laufen, Typ dcomcnfg und dann klicken OK öffnen Komponentendienste.

  2. Klicken Sie in der Konsolenstruktur auf, um sie zu erweitern Komponentendienste, Zum erweitern klicken Computers, Zum erweitern klicken Mein Computer, Zum erweitern klicken Koordinator für verteilte Transaktionen und dann klicken Lokaler Fehlercode.

  3. Rechtsklick Lokaler Fehlercode und klicken Eigenschaften um die anzuzeigen Lokale DTC-Eigenschaften Dialogbox.

  4. Drücke den Sicherheit Tab.

  5. Häkchen „Netzwerk-DTC-Zugriff“ Kontrollkästchen.

  6. Zum Schluss noch ein Häkchen setzen „Eingehenden Datenverkehr zulassen“ Und „Ausgehend zulassen“ Kontrollkästchen.

  7. Klicken Anwenden, OK.

  8. Es erscheint eine Meldung über Neustart der Service.

  9. Klicken OK und das ist alles.

Referenz : https://msdn.microsoft.com/en-us/library/dd327979.aspx

Notiz: Manchmal kann die Netzwerk-Firewall auf dem lokalen Computer oder dem Server Ihre Verbindung unterbrechen. Erstellen Sie daher unbedingt entsprechende Regeln „Eingehenden Datenverkehr zulassen“ Und „Ausgehend zulassen“ Anschluss für C:\Windows\System32\msdtc.exe

Brauchen Sie überhaupt MSDTC?Die Eskalation, die Sie erleben, wird häufig durch die Erstellung mehrerer Verbindungen innerhalb eines einzelnen TransactionScope verursacht.

Wenn Sie es benötigen, müssen Sie es wie in der Fehlermeldung beschrieben aktivieren.Unter XP:

  • Gehen Sie zu Verwaltung -> Komponentendienste
  • Erweitern Sie Komponentendienste -> Computer ->
  • Klicken Sie mit der rechten Maustaste -> Eigenschaften -> Registerkarte MSDTC
  • Klicken Sie auf die Schaltfläche Sicherheitskonfiguration

Ich habe herausgefunden, dass der beste Weg zum Debuggen die Verwendung des Microsoft-Tools namens ist DTCPing

  1. Kopieren Sie die Datei sowohl auf den Server (DB) als auch auf den Client (Anwendungsserver/Client-PC).
    • Starten Sie es auf dem Server und dem Client
    • Am Server:Geben Sie den NetBIOS-Computernamen des Clients ein und versuchen Sie, eine DTC-Verbindung einzurichten
    • Starten Sie beide Anwendungen neu.
    • Beim Kunden:Geben Sie den NetBIOS-Computernamen des Servers ein und versuchen Sie, eine DTC-Verbindung einzurichten

Ich hatte in unserem alten Firmennetzwerk Probleme mit dem Tarifvertrag und habe ein paar Tipps:

  • Wenn Sie die Fehlermeldung „Gethostbyname fehlgeschlagen“ erhalten, bedeutet dies, dass der Computer den anderen Computer nicht finden kann Netbios-Name.Der Server könnte beispielsweise den Client auflösen und anpingen, aber das funktioniert auf DNS-Ebene.Nicht auf NetBIOS-Suchebene.Durch die Verwendung von WINS-Servern oder das Ändern des LMHOST (unkorrekt) wird dieses Problem gelöst.
  • Wenn Sie die Fehlermeldung „Zugriff verweigert“ erhalten, stimmen die Sicherheitseinstellungen nicht überein.Sie sollten die Registerkarte „Sicherheit“ für den msdtc vergleichen und sicherstellen, dass Server und Client übereinstimmen.Eine andere Sache, die man sich ansehen sollte, ist die RestrictRemoteClients Wert.Abhängig von Ihrer Betriebssystemversion und vor allem vom Service Pack kann dieser Wert unterschiedlich sein.
  • Weitere Verbindungsprobleme:
    • Die Firewall zwischen Server und Client muss die Kommunikation über Port 135 zulassen.Und was noch wichtiger ist: Die Verbindung kann von beiden Standorten aus initiiert werden (ich hatte viele Probleme mit den Firewall-Mitarbeitern in meinem Unternehmen, weil sie davon ausgingen, dass nur der Server eine Verbindung zu diesem Port herstellen würde).
    • Das Protokoll gibt einen zufälligen Port zurück, zu dem eine Verbindung für die eigentliche Transaktionskommunikation hergestellt wird.Firewall-Leute mögen das nicht, sie beschränken die Ports gerne auf einen bestimmten Bereich.Sie können die Generierung dynamischer RPC-Ports auf einen bestimmten Bereich beschränken, indem Sie die unter beschriebenen Schlüssel verwenden So konfigurieren Sie die dynamische RPC-Portzuweisung für die Arbeit mit Firewalls.

Meiner Erfahrung nach sind Ihre Transaktionen nicht mehr das Problem, wenn das DTCPing in der Lage ist, eine vom Client initiierte und vom Server initiierte DTC-Verbindung aufzubauen.

Kann man auch sehen Hier Erfahren Sie, wie Sie MSDTC über die Datei „services.msc“ in der Systemsteuerung aktivieren.

Auf dem Server, auf dem sich der Trigger befindet, müssen Sie den MSDTC -Dienst einschalten.Sie können dies tun, indem Sie auf START > EINSTELLUNGEN > SYSTEMSTEUERUNG > VERWALTUNGSWERKZEUGE > DIENSTLEISTUNGEN klicken.Suchen Sie den Dienst "Distributed Transaction Coordinator" und klicken Sie mit der rechten Maustaste (wählen Sie)> Start.

MSDTC muss auf beiden Systemen aktiviert sein, sowohl auf dem Server als auch auf dem Client.
Stellen Sie außerdem sicher, dass zwischen den Systemen keine Firewall vorhanden ist, die RPC blockiert.
DTCTest ist eine nette kleine App, die Ihnen bei der Behebung anderer Probleme hilft.

@Dan,

Benötige ich keine MSDTC -Aktivierung, damit Transaktionen funktionieren?

Nur verteilte Transaktionen – solche, die mehr als eine einzelne Verbindung beinhalten.Stellen Sie unbedingt sicher, dass Sie innerhalb der Transaktion nur eine einzige Verbindung öffnen, damit es nicht zu einer Eskalation kommt – auch die Leistung wird viel besser sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top