Я использую среду .NET 2.0/3.5 для своего приложения. Мне нужно запустить несколько команд SQL для нескольких подключений, и каждое соединение находится на другом сервере (Oracle, SQL Server). Мне нужно убедиться, что эти команды являются транзакционными.Несколько транзакций транзакций SQL во всех разных соединениях базы данных
Например: Мне нужно выполнить INSERT в таблице как для баз данных Oracle, так и для SQL Server, а затем зафиксировать их, если не было выбрано никаких исключений. Если возникло исключение, я хотел бы откатиться на обоих серверах, если это необходимо.
Я подозреваю, что мне нужно будет использовать System.Transactions и TransactionScope. Для этого потребуется настроить координатор распределенных транзакций Microsoft (MSDTC) на серверах баз данных, а также на сервере приложений.
Я смотрел высоко и низко и не мог найти статей, описывающих поэтапную настройку MSDTC с взаимной аутентификацией (включая настройку параметров брандмауэра и настроек MSDTC.) Я просмотрел документацию Microsoft по настройке MSDTC, но, похоже, полностью ничего не стоит и не полностью документирован (если вы не найдете мне действительно хорошую статью MSDN о том, как ее настроить.)
Использует MSDTC единственный способ выполнить мою работу?
Если да, то как я его правильно настроил?
EDIT:
- Я использую Windows Server 2003 для всех машин.
- У меня есть два SQL Server. Один из них - SQL Server 2000, а другой - 2005 год.
- У меня есть один сервер Oracle, и это версия 11g
- Приложение, которое мы разрабатываем, иногда должно переписывать/создавать записи по всем трем базам данных транзакционным способом.
- Это не проблема между клавиатурой и стулом. Мы читаем статьи о MSDN о том, как настроить все, что касается MSDTC, но мы не можем заставить DTCPing и другие тестовые приложения работать. Мы искали пошаговую статью, подробно описывающую этот процесс. Я неоднократно сталкивался с документацией MSDN о том, что «не учтенные» шаги для выполнения определенных задач.