SQL Server 2005 Вновь intoduced способ отката операций в SQL Server 2005
SET XACT_ABORT ON
когда XACT_ABORT находится на. T-SQL заявления будут автоматически откат транзакции, если произошла ошибка в отчетности.
SET XACT_ABORT ON
ИСПОЛЬЗОВАНИЕ Emp
Начните Тран
Вставить в EmpInfo значения(1)
Вставить в EmpInfo значения(1) — Это заявление будет поднимать первичный ключ ошибке
Вставить в EmpInfo значения(2)
Commit Tran
Первая линия заявление будет выполняться без ошибок. Первичные ошибки ключ поднимет во второй линии. Но весь блок транзакции не будут совершены из XACT_ABORT в на.
Следует отметить, что XACT_ABORT завершает текущий * партии *, не всю команду. Партии разделяются GO ключевым словам. Выполнение продолжится в начале следующей партии.
Эта функция также в SQL Server 2000, хотя он ведет себя несколько по-разному для различных ошибок.
В SQL 2000, Есть случаи, когда XACT_ABORT не в откат транзакции автоматически.
Например:
Установка на недопустимое имя столбца.
Вставка в первичный ключ с IDENTITY_INSERT OFF.
Выполнение SELECT, который использует несуществующий UDF.
Такие ошибки, как правило, из-за плохой автор команды, так что они не происходят в тот же день в день работы вашей программы, если кто-то меняет схемы. Но я объяснить свои возможности, когда авторские сценарии обновления базы данных при развертывании новой версии проекта, только в случае, если размещение не так, как планировалось.
Есть способы, чтобы справиться с этими ошибками. Ваш COMMIT должно быть в партии выполнении DML заявления. После партии (после ключевого слова GO) Вы можете проверить @ @ TRANCOUNT, чтобы увидеть, если он больше нуля, и действовать соответствующим образом. Обычно ROLLBACK сделки.
Сделки могут распространяться на партии, так что вы можете выполнить откат в последующие партии.