В чем разница между SET xact_abort ON и блоком try / catch с обработкой транзакций в sqlserver 2005? - PullRequest
1 голос
/ 11 августа 2009

Мне нужно улучшить некоторые существующие хранимые процедуры в моем проекте для лучшей обработки транзакций. Я понимаю, что могу использовать в своей процедуре инструкцию SET XACT_Abort ON, чтобы в случае ошибок транзакция автоматически откатывалась. Я также могу использовать блок Try / Catch для обработки ошибок и откатить транзакцию в блоке Catch в случае ошибок? Мой вопрос, в чем главное различие между этими двумя и почему я должен использовать один поверх другого? Есть ли какие-либо рекомендации, которые я должен использовать при выборе между этими двумя?

1 Ответ

1 голос
/ 11 августа 2009

Try / Поймать блоки новый с SQL Server 2005 и позволяют обрабатывать ошибки, а не просто иметь их откат - Try / Поймать блоки ограничивают вас к одной партии, но, конечно, это спорный вопрос в хранимой процедуре. Если ваши процедуры должны оставаться совместимыми с предыдущими версиями SQL-сервера, вы можете рассмотреть XACT_ABORT, если это поможет, но я бы сказал, что Try / Catch - это путь для дальнейшего развития.

...