У меня большой сгенерированный скрипт.Он имеет несколько пакетов (GO
операторов).Первая строка: BEGIN TRAN
Если во время выполнения возникнут какие-либо ошибки, вызванные либо с помощью RAISERROR
, либо с помощью SQL Server, я хочу откатить транзакцию.Я хочу, чтобы скрипт продолжал выполняться до самого конца, затем выполнял откат, а не прерывал выполнение, как только возникает какая-либо ошибка.
Проверка @@error <> 0
в конце скрипта кажется недостаточной, посколькуесли последний оператор в сценарии завершается успешно, @@ error будет 0, даже если предыдущие операторы не выполнялись.
Я не могу объявить @rollback BIT
в самом начале, потому что сценарий сегментирован на несколько пакетов,и поэтому переменная выходит за рамки.
Я понимаю, что RAISERROR
не означает, что моя транзакция будет откатана.
Любые предложения о наилучшем способе реализации этого в SQL2000 совместимым образом?