2009-06-03 3 views
2

Ich verwende zwei SQL Server-Verbindungsobjekt in meinem C# -Konsolenanwendungsprojekt. Ich brauche dies in einzelner Transaktion zu tun, damit ich Transaction verwendet (Distributed Transaction)Transactionscope funktioniert nicht, wenn zwei Remote-SQL-Verbindungen

Ich bin nicht in der Lage, die Verbindung in Transaction verwenden Sie den Fehler anzeigt

MSDTC auf Server nicht verfügbar ist.

Wie kann ich lösen .... Sowohl die eine SQL-Verbindung ist Remote-Server und eine andere ist lokal Server.

Hinweis: - Der Dienst msdtc wurde bereits gestartet.

Der Server wurde auf beiden Computern gestartet. Ich stehe immer noch vor dem Problem. Muss ich die Firewall in meinen lokalen Intranet-Rechnern ausschalten?

+0

Stellen Sie sicher, dass MSDTC auf Ihrem Remote-Server und Ihrem lokalen Server gestartet ist. – Joseph

Antwort

2

Wenn Sie eine verteilte Transaktion ausführen, muss der Microsoft Distributed Transaction Coordinator auf Ihrem lokalen Computer und auf allen Servern ausgeführt werden, die an der Transaktion teilnehmen. Wenn Sie Firewalls installiert haben, müssen Sie auch sicherstellen, dass Sie die Ports begrenzt haben, auf denen MSDTC kommuniziert, und Ihrer Firewall-Konfiguration die entsprechenden Regeln hinzugefügt haben, um die Verbindungen zuzulassen - ich glaube, dass sie sowohl den Portmapper-Zugriff als auch den spezifischen Port benötigt Bereich, den Sie für RPC ausgewählt haben. Es gibt auch verschiedene Sicherheitseinstellungen für MSDTC, die synchronisiert werden müssen, um zu steuern, wie die Authentifizierung zwischen den Servern durchgeführt wird.

Hier sind einige Links, die hilfreich sein können:

  1. MSDTC at MSDN
  2. MSDTC Troubleshooting
  3. MSDTC and Firewall Issues
2

Starten Sie den MSDTC-Dienst.

Auf der Eingabeaufforderung:

net start msdtc 

Oder von MMC. Suchen Sie nach "Distributed Transaction Coordinator" und klicken Sie auf Start.

2

Wenn Sie Schwierigkeiten haben, DTC gut zu spielen (besonders wenn eine Firewall oder ein SQL-Cluster beteiligt sind), dann ist DTCPing ein großartiges Tool (von Microsoft), um es zu identifizieren. Beachten Sie, dass (IIRC) DTCPing in beiden Richtungen möglich sein muss

1

Ich hatte das gleiche Problem auf einem Projekt, das ich in letzter Zeit gearbeitet. Leider hatte ich nicht die Rechte, MSDTC wie in einer anderen Antwort beschrieben starten zu können. Wenn Sie sich in der gleichen Situation befinden, würde ich empfehlen, die Frage zu lesen, die ich vor einiger Zeit zu diesem Thema veröffentlicht habe.

MSDTC Issue

0

Nur eine Idee, haben Sie dies schon wahrscheinlich versucht. Wenn Sie bestätigt haben, dass der MSDTC-Dienst ausgeführt wird, haben Sie sich die Ereignisprotokolle auf den Computern angesehen, auf denen die Dienste ausgeführt werden? Sie können Fehlerinformationen von den Diensten dort finden.

Verwandte Themen