Как остановить выполнение скрипта в Transact-SQL

Задача: остановить выполнение сложного sql-запроса. Нормального способа разработчики MS Sql server 2005 не предусмотрели, приходится импровизировать. Первым делом на ум приходит что-то вроде:

RAISERROR ('ЗАЩИТА ОТ СЛУЧАЙНОГО ЗАПУСКА', 16, 1) 
RETURN

Но данный метод не сработает, если в sql-запросе применяется конструкция go, разбивающая его на независимые пакеты инструкций. В результате длительных изысканий коллективный разум интернета нашел следующую конструкцию:

RAISERROR ('ПРОСТО ОСТАНОВКА, ЧТОБЫ ПРИ СЛУЧАЙНОМ ЗАПУСКЕ SQL НЕ ВЫПОЛНЯЛАСЬ ДАЛЬШЕ', 20, 1)  WITH LOG 

У нее есть один существенный недостаток, пользователь должен иметь права sysadmin. Но другого выхода пока не найдено. Кроме того, данная команда не просто останавливает выполнение запроса, но и разрывает соединение сервера с клиентом.

T-SQL STOP or ABORT command in SQL Server

RETURN (Transact-SQL)


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>