Ich verwende das .NET 2.0/3.5-Framework für meine Anwendung. Ich muss mehrere SQL-Befehle über mehrere Verbindungen ausführen und jede Verbindung ist auf einem anderen Server (Oracle, SQL Server). Ich muss sicherstellen, dass diese Befehle transaktional sind.Mehrere SQL-Transaktionsbefehle über verschiedene Datenbankverbindungen
Zum Beispiel: Ich muss eine INSERT in einer Tabelle sowohl Oracle und SQL Server-Datenbanken durchführen, dann Commit sie, wenn keine Ausnahmen geworfen wurden. Wenn es eine Ausnahme gibt, möchte ich bei Bedarf auf beiden Servern einen Rollback durchführen.
Ich vermute, ich muss System.Transactions und TransactionScope verwenden. Dies erfordert, dass ich den Microsoft Distributed Transaction Coordinator (MSDTC) auf den Datenbankservern und auch auf dem Anwendungsserver eingerichtet habe.
Ich habe hoch und niedrig geschaut und konnte keine Artikel finden, die MSDTC schrittweise mit gegenseitiger Authentifizierung (einschließlich der Konfiguration von Firewall-Einstellungen und MSDTC-Einstellungen) beschreiben. Ich schaute auf die Microsoft-Dokumentation zum Einrichten von MSDTC, aber es scheint völlig wertlos und nicht vollständig dokumentiert (es sei denn, Sie finden mich einen wirklich guten MSDN-Artikel, wie man es aufstellt.)
Ist MSDTC der einzige Weg, um meine Arbeit zu erledigen?
Wenn ja, wie zum Teufel konfiguriere ich es richtig?
EDIT:
- Ich verwende Windows Server 2003 für alle Maschinen.
- Ich habe zwei SQL Server. Einer ist SQL Server 2000 und der andere ist 2005.
- Ich habe einen Oracle-Server und es ist Version 11g
- Die Anwendung, die wir entwickeln, muss manchmal ändern/Datensätze in allen drei Datenbanken in einer transaktionalen Weise erstellen.
- Es ist kein Problem zwischen der Tastatur und dem Stuhl. Wir lesen die MSDN-Artikel darüber, wie alles in Bezug auf MSDTC eingerichtet wird, aber wir können DTCPing und andere Testanwendungen nicht zum Laufen bringen. Wir suchten nach einem Schritt-für-Schritt-Artikel, der den Prozess genau beschreibt. Ich bin bei mehr als einer Gelegenheit auf MSDN-Dokumentation gestoßen, die bestimmte Schritte "ausgelassen" hat.