Какие могут быть аналоги TransactionScope?

На работе возникла необходимость использовать транзакции в коде, который поддерживается у нас до сих пор. Архитектура приложения такая, что запросы в БД уходят из 3-4 разных сборок, в некоторых случаях с использованием сохраненных процедур, с 3-4 адаптерами. Иногда больше.

Попробовал TransactionScope. На тестовом локальном сервере работало без проблем, но на основном рабочем сервере возникли проблемы со службой MSDTC: она запущена, но распределенные транзакции не запускаются. Если выполнить руками запрос «BEGIN DISTRIBUTED TRANSACTION», то получаем ошибку «MSDTC on server 'server' is unavailable.», а в логе сервера значится «Resource Manager Creation Failed: 0x8004d01c(error not found)». Служба MSDTC запущена и работает, проверили несколько раз. В проблеме рылся не я, но админы утверждают, что проблема в версии сервера — надо обновляться, а с этим у нас проблемы, сервер нагружен постоянно и достаточно сильно, перезагрузки планируются заранее задолго.

Решил посмотреть на альтернативные способы. Способ с созданием отдельного connection, запуском в нем транзакции и подпихивания этого connection всем требуемым адаптерам выглядит не очень удобно, отказался.

Может быть, есть другие способы, по легкости применения аналогичные transactionscope?
  • Вопрос задан
  • 2765 просмотров
Пригласить эксперта
Ответы на вопрос 2
@mayorovp
У вас одна БД или несколько?
Если одна, то использование MSDTC есть серьезная ошибка дизайна.
Не вкладывайте одни TransactionScope в другие, и все будет работать.
Ответ написан
Комментировать
Sellec
@Sellec Автор вопроса
Кодер
TransactionScope вообще не работают, выше написал, мне их аналог нужен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы