Требование для явных операторов транзакции при использовании SET XACT_ABORT ON? - PullRequest
0 голосов
/ 20 апреля 2011

Если я использую SET XACT_ABORT ON в операторе CREATE PROCEDURE, должен ли я обернуть все свои операторы в явные операторы транзакции: BEGIN TRANSACTION и COMMIT?

Или SET XACT_ABORT ON прекращает выполнение процедуры независимо от них в случае ошибки выполнения?

1 Ответ

1 голос
/ 20 апреля 2011

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

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

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

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