MSDTC-Problembehandlungen

Allgemeine Erklärung

Der Distributed Transaction Coordinator (DTC oder MSDTC) ist ein Systemdienst von Microsoft, der bei Windows-NT-basierten Systemen standardmäßig enthalten ist und automatisch mitgestartet wird. Er dient zur Koordination atomarer Operationen, welche auf mehrere Ressourcen angewendet werden. In Windows selbst ist der DTC ein normaler Windows-Systemdienst, der im Hintergrund ausgeführt wird und in der Systemsteuerung unter 'Verwaltung - Dienste' gesteuert werden kann.

Verwendung in easyWinArt

In easyWinArt wird der DTC verwendet, um sicherzustellen, dass zusammengehörige Änderungen an mehreren Tabellen oder von mehreren Datensätzen in einer Tabelle auf jeden Fall komplett oder gar nicht durchgeführt werden, so dass keine nach easyWinArt-Logik inkonsistenten Zustände entstehen können. Weiterhin wird das gesamte Software-Update von easyWinArt in einer Transaktion durchgeführt, um zu gewährleisten, dass dieses konsistent abläuft.

Die eigentliche Verwendung der Transaktionen wird im Quellcode von easyWinArt angestoßen. An den entsprechenden Programmpunkten, an denen z.B. die Datenbankänderungen gestartet werden, sind gezielt Befehle bzgl. der Transaktionen enthalten. Die Klassenbibliotheken der von uns eingesetzten .NET-Software-Plattform bieten entsprechende Funktionen an.

Bei einer Einzelplatzinstallation oder bei der Verwendung von easyWinArt auf dem Server, auf dem sich auch die Datenbank und das Applikations-Verzeichnis befinden, ist nur der eine DTC-Dienst dieses Computers involviert, die Transaktionen laufen innerhalb eines Windows-Betriebssystems ab, vorausgesetzt, der DTC-Dienst wird ausgeführt. Diese Konstellation ist unproblematisch und es sind diesbezüglich noch keine Probleme aufgetreten.

Wird easyWinArt im Netzwerk (Client-Server-Struktur) verwendet, so sind an einer Transaktion zwei DTC-Dienste beteiligt, auf der einen Seite der DTC des Computers, auf dem easyWinArt ausgeführt (auch Client genannt) wird und auf der anderen Seite der DTC des Computers, auf dem der SQL Server mit der Datenbank läuft (auch Server genannt). Die beiden DTC-Dienste müssen über das Netzwerk miteinander kommunizieren können. Hierbei können Schwierigkeiten auftreten und ggf. besondere Einstellungen oder Konfigurationen notwendig sein.

Im Startvorgang von easyWinArt wird nach dem Bestätigen des Anmeldefensters die korrekte Funktion der Transaktionen überprüft. Sollte keine Transaktion durchgeführt werden können, so erscheint eine entsprechende Fehlermeldung und easyWinArt wird beendet.

Voraussetzungen eines Client-Server-DTC-Betriebs

Ausführung DTC und RPC: Auf beiden Computern muss jeweils der DTC-Systemdienst ausgeführt werden (Bei 'Startmodus: Automatisch' wird dieser mit Windows gestartet, dies ist auch die Standardeinstellung einer Windows-Installation). Weiterhin muss die RPC-Technik auf beiden Computern laufen und funktionieren, dies ist in der Regel standardmäßig von Microsoft aus gegeben.

DTC-Einstellungen: Auf beiden Computern müssen die Sicherheitseinstellungen konfiguriert sein, wie hier beschrieben. In der Regel wird dies soweit möglich durch den easyWinArt-Installationsassistenten erledigt, sollte aber bei Problemen nochmals überprüft werden.

Firewall bzgl. DTC: Die Kommunikation zwischen den DTC-Diensten wird standardmäßig durch die beiden Windows-Firewalls der beiden beteiligten Computer blockiert. Diese müssen beide konfiguriert werden, wie hier beschrieben. Wird auf einer der beiden Seiten eine andere Software-Firewall als die von Windows eingesetzt, so beachten Sie bitte die Hinweise weiter unten.

NetBios/DNS - Namensauflösung: Die beiden beteiligten Computer müssen sich gegenseitig über ihre Computernamen erreichen können. Dies lässt sich durch jeweils einen Ping von beiden Seiten aus unter Verwendung des jeweiligen Computernamens leicht testen.

Firewall bzgl. RPC: Die RPC-Kommunikation zwischen den beiden Computern darf nicht blockiert werden. Bisher hat es diesbezüglich bei Verwendung der Windows-Firewall keine Probleme gegeben. Wird auf mindestens einem der beteiligten Computer eine andere Software-Firewall als die von Windows eingesetzt, so können gesonderte Einstellungen notwendig sein, siehe weiter unten.

Security Identifier (SID): Durch diesen Sicherheits-Identifikator identifiziert Microsoft Windows automatisch jedes System, jeden Benutzer und jede Gruppe. Wird ein Windows auf einen anderen PC geclont, kann es unter Umständen vorkommen, dass beide PCs dieselbe SID eingestellt haben. Dies ist für Transaktionen nicht zulässig. Mit dem Programm PsGetSid kann die SID ausgelesen werden. Bei gleichen SIDs ist dafür zu sorgen, dass diese überall unterschiedlich sind.

Allgemeine Problembehebung

Sollte es Probleme mit den Transkationen und dem DTC geben, so prüfen Sie bitte an allen beteiligten Computern die oben genannten Einstellungen bezüglich Sicherheitseinstellungen und Firewall-Freigaben. Nach Möglichkeit probieren Sie bitte mehrere Clients aus. Sobald ein Client funktioniert, ist zumindest sichergestellt, dass am Server alles korrekt eingestellt ist und es müssen nur noch die restlichen Clients beachtet werden.

NetBios/DNS - Namensauflösung: Test und Problembehebung

Server und Client müssen sich über Ihre Computernamen erreichen können. Dabei wird auf DNS oder NetBios zurückgegriffen, um den Computernamen aufzulösen und die dazugehörige IP-Adresse zu erfahren. Um dies zu testen, starten Sie auf dem Server-Computer die Eingabeaufforderung und geben Sie den Befehl 'ping MeinClient-PC' ein. Hierbei muss als Ergebnis die IP-Adresse des Clients sowie eine erfolgreiche Rückmeldung angezeigt werden. Wiederholen Sie dies am Client-Computer mit dem Computernamen des Servers. Sollte einer der Tests fehlschlagen, so beheben Sie das Netzwerkproblem oder wenden Sie sich an den zuständigen Administrator. Bei festen IP-Adressen kann man das Problem zumindest kurzfristig beheben, in dem man an dem Computer, der den anderen nicht erreichen kann, eine entsprechende Zuordnung in der hosts-Datei ergänzt.

Firewall-Hinweise bzgl. DTC und RPC

Bei manchen Firewalls, z.B. von Norton, reicht es nicht aus, den DTC-Dienst auf Dateiebene freizuschalten, wie oben bereits beschrieben. Es müssen zusätzlich Ports freigegeben werden. Generell müssen folgende Ports für die bidirektionale Kommunikation geöffnet sein:

  • port 135 (RPC Endpoint Mapper port for handshake)
  • port 3372 (MSDTC port)
  • mindestens ein dynamischer port (standardmäßig zwischen 1024 und 65535)

Eventuell hilft es, die Kommunikation im internen Netzwerk (LAN) komplett freizugeben, damit ein dynamischer Port zustande kommen kann.

Hilfreiche Seiten im Internet

Folgende Seiten bieten hilfreiche Hinweise sowie das Tool DTCPing.exe von Microsoft, mit dem DTC-Tests möglich sind.

http://simpleverse.wordpress.com/2012/08/23/how-to-configure-ms-dtc-through-a-firewall/

http://msdn.microsoft.com/en-us/library/aa561924.aspx

http://www.sqlwebpedia.com/content/msdtc-troubleshooting

http://technet.microsoft.com/de-de/library/cc753510%28v=ws.10%29.aspx

http://support.microsoft.com/kb/154596/en-us

http://support.microsoft.com/kb/306843

http://technet.microsoft.com/de-de/library/cc753866%28v=ws.10%29.aspx

http://technet.microsoft.com/de-de/library/cc725983%28v=ws.10%29.aspx

http://fairwaytech.com/2012/12/distributed-transaction-coordinators-port-135-and-firewalls-oh-my/

http://stackoverflow.com/questions/673806/msdtc-how-many-ports-are-needed

http://technet.microsoft.com/en-us/library/cc738291%28v=ws.10%29.aspx

http://support.microsoft.com/kb/908620/de

Beratung erwünscht?

Gerne können Sie mich oder einen mein­er freund­lichen Kollegen telefonisch er­reichen:  +49 2161 277 680

Alter­na­tiv schrei­ben Sie uns an  info@it-easy.de oder nutz­en Sie das nach­folgende Kontakt­formular.

Ihr Ralf Jasper
Kundenservice

Mitarbeiterfoto von Herrn Ralf Jasper


Rückruf-Service

Für eine möglichst unkomplizierte Kontaktaufnahme füllen Sie bitte das unten stehende Formular aus und klicken auf „Rückruf anfordern“.