Używam ramy .NET 2.0/3.5 dla mojej aplikacji. Muszę uruchomić kilka poleceń SQL w wielu połączeniach, a każde połączenie jest na innym serwerze (Oracle, SQL Server). Muszę się upewnić, że te polecenia są transakcyjne.Wiele poleceń transakcyjnych SQL w różnych połączeniach z bazą danych
Na przykład: Muszę wykonać INSERT w tabeli w bazach danych Oracle i SQL Server, a następnie zatwierdzić je, jeśli nie zostały zgłoszone żadne wyjątki. Jeśli wystąpił wyjątek, w razie potrzeby chciałbym przywrócić oba serwery.
Podejrzewam, że będę musiał użyć System.Transactions i TransactionScope. Będzie to wymagać ustawienia Microsoft Distributed Transaction Coordinator (MSDTC) na serwerach baz danych, a także na serwerze aplikacji.
Wyglądałem na wysoki i niski i nie mogłem znaleźć artykułów opisujących krok po kroku konfigurowanie MSDTC z wzajemnym uwierzytelnianiem (w tym konfigurowanie ustawień zapory i ustawień MSDTC.) Przyjrzałem się dokumentacji Microsoft dotyczącej konfigurowania MSDTC, ale wydaje się całkowicie bezwartościowy i nie w pełni udokumentowany (chyba że możesz znaleźć mi naprawdę dobry artykuł MSDN na temat konfiguracji).
Czy używanie MSDTC jest jedynym sposobem na wykonanie mojej pracy?
Jeśli tak, to w jaki sposób mogę go poprawnie skonfigurować?
EDIT:
- używam Windows Server 2003 dla wszystkich maszyn.
- Mam dwa SQL Server's. Jednym z nich jest SQL Server 2000, a drugi to rok 2005.
- Mam jeden serwer Oracle i jest to wersja 11g
- Aplikacja, którą rozwijamy, czasami musi zmieniać/tworzyć rekordy we wszystkich trzech bazach danych w sposób transakcyjny.
- To nie problem między klawiaturą a krzesłem. Czytamy artykuły na temat MSDN, jak skonfigurować wszystko, co dotyczy MSDTC, ale nie możemy sprawić, aby DTCP i inne aplikacje testujące działały. Szukaliśmy artykułu krok po kroku opisującego proces. Natknąłem się na dokumentację MSDN na więcej niż jeden raz, że "pominąłem" kroki, aby zrobić pewne rzeczy.