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