Не забравяйте, че има грешки, които TRY-CATCH няма да заснеме със или без XACT_ABORT
.
Въпреки това, SET XACT_ABORT ON
не засяга улавянето на грешки. Това обаче гарантира, че всяка транзакция е отменена / обречена. Когато е "ИЗКЛЮЧЕНО", тогава все още имате избор между commit или rollback (в зависимост от xact_state). Това е основната промяна в поведението на SQL 2005 за XACT_ABORT
Това, което той също прави, е да премахва заключванията и т.н., ако времето за изчакване на клиентската команда започне и клиентът изпрати директивата "abort". Без SET XACT_ABORT
, ключалките могат да останат, ако връзката остане отворена. Моят колега (MVP) и аз тествахме това обстойно в началото на годината.