Есть ли недостатки размещения явных транзакций в StoredProcedures в SQL SERVER 2008 - PullRequest
3 голосов
/ 23 июня 2011

Я должен реализовать транзакции в моем коде.У меня есть следующие опции: -

  1. TransactionScope из кода C #: - Я буду использовать этот случай, если у меня есть некоторый логический код в транзакции вместе с вызовами из базы данных. Транзакция откатывается и блокировки снимаются, если командаТайм-ауты есть.
  2. Наличие явных транзакций в SP: - В случае тайм-аута команды транзакции остаются открытыми и блокировки не снимаются.

Кто-нибудь из вас сталкивался с подобными проблемами.Пожалуйста, предложите.Также скажите, что настройка XACT_ABORT_ON поможет во втором случае.

Ответы [ 2 ]

0 голосов
/ 23 июня 2011
  • Я всегда использую SET XACT_ABORT ON
  • Транзакции на стороне сервера не требуют MSDTC и имеют меньшие издержки
  • TRY / CATCH делает сохраненные процессы более надежными

Смотрите мой ответ здесь для безопасного хранимого шаблона процесса, который будет также работать с вложенными транзакциями: Вложенные хранимые процедуры, содержащие шаблон TRY CATCH ROLLBACK?

0 голосов
/ 23 июня 2011

Если ваша хранимая процедура не является «интерфейсной процедурой» (вызываемой сторонней организацией вне вашего кода), я рекомендую использовать TransactionScope или создать SqlTransaction в коде для вызова вашей процедуры.Обработка транзакций в коде намного проще.Вы можете прочитать эту статью: http://www.code -magazine.com / Article.aspx? Quickid = 0305111 - как вы можете видеть, если вы начнете использовать транзакции в хранимых процедурах, вещи могут быть чрезмерно сложными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...