Какие могут быть аналоги 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?
  • Вопрос задан
  • 2762 просмотра
Пригласить эксперта
Ответы на вопрос 2
@mayorovp
У вас одна БД или несколько?
Если одна, то использование MSDTC есть серьезная ошибка дизайна.
Не вкладывайте одни TransactionScope в другие, и все будет работать.
Ответ написан
Комментировать
Sellec
@Sellec Автор вопроса
Кодер
TransactionScope вообще не работают, выше написал, мне их аналог нужен.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы