Откат транзакции в SQL Server 2005

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 в на.

1 комментарий к откат транзакции в SQL Server 2005

  • noreply@blogger.com (Тодд)

    Следует отметить, что XACT_ABORT завершает текущий * партии *, не всю команду. Партии разделяются GO ключевым словам. Выполнение продолжится в начале следующей партии.

    Эта функция также в SQL Server 2000, хотя он ведет себя несколько по-разному для различных ошибок.

    В SQL 2000, Есть случаи, когда XACT_ABORT не в откат транзакции автоматически.

    Например:

    Установка на недопустимое имя столбца.

    Вставка в первичный ключ с IDENTITY_INSERT OFF.

    Выполнение SELECT, который использует несуществующий UDF.

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

    Есть способы, чтобы справиться с этими ошибками. Ваш COMMIT должно быть в партии выполнении DML заявления. После партии (после ключевого слова GO) Вы можете проверить @ @ TRANCOUNT, чтобы увидеть, если он больше нуля, и действовать соответствующим образом. Обычно ROLLBACK сделки.

    Сделки могут распространяться на партии, так что вы можете выполнить откат в последующие партии.

Написать ответ

Вы можете использовать эти HTML теги

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>