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