Команда T-SQL STOP или ABORT в SQL Server

Существует ли команда в Microsoft SQL Server T-SQL, чтобы сказать сценарию прекращать обрабатывать? У меня есть сценарий, который я хочу сохранить в архивных целях, но я не хочу, чтобы любой выполнил его.

51
задан abatishchev 8 December 2011 в 21:44
поделиться

4 ответа

Для работы над вопросом RETURN/GO можно поставить RAISERROR ('Oi! Stop!', 20, 1) С СООТВЕТСТВИЯ сверху.

Это закроет соединение с клиентом в соответствии с RAISERROR на MSDN.

Самый большой недостаток в том, что вы должны быть сисадмином, чтобы использовать строгость 20.

Редактирование:

Простая демонстрация, чтобы противостоять комментарию Джерси Чувака...

RAISERROR ('Oi! Stop!', 20, 1)  WITH LOG
SELECT 'Will not run'
GO
SELECT 'Will not run'
GO
SELECT 'Will not run'
GO
14
ответ дан 7 November 2019 в 09:53
поделиться

Попробуйте запустить его как TSQL-скрипт

SELECT 1
RETURN
SELECT 2
SELECT 3

Возврат завершает выполнение.

RETURN (Transact-SQL)

Выходит из запроса без каких-либо условий или процедура. Возврат немедленно полный и может быть использован в любой момент выйти из процедуры, партии или Блок заявления. Заявления, которые Следующие RETURN не выполняются.

3
ответ дан 7 November 2019 в 09:53
поделиться

Нет, нет ни одного - у вас есть пара вариантов:

  1. Оберните весь сценарий в большом случае, если / конечный блок, который просто обеспечивается не так, чтобы не было правдой (т. Е. Если 1 = 2 начала »- Однако это будет работать, однако, только если сценарий не включает в себя какие-либо операторы GO (так как это указывает на новую партию)

  2. , используйте оператор возврата в верхней части (снова, ограниченный пакетными сепараторами)

  3. Использовать подход на основе подключения , что обеспечит неисполнение для всего сценария (целое соединение, чтобы быть более точным) - используйте что-то вроде , установленного Parseonly на « или SET NOEXEC ON ' в верхней части из скрипта. Это обеспечит все заявления в соединении (или до тех пор, пока не будет выключен указанное утверждение), не будет выполняться и вместо этого будет проанализирован / скомпилирован только.

  4. Используйте блок комментариев, чтобы прокомментировать весь скрипт (т.е. * и * /)

Редактировать: демонстрация, что оператор «возврата» является пакетным специфическим, обратите внимание, что вы будете продолжать видеть наборы результатов после возвращения:

select 1
return
go
select 2
return
select 3
go
select 4
return
select 5
select 6
go
36
ответ дан 7 November 2019 в 09:53
поделиться

Почему не просто добавить следующее в начало сценария

PRINT 'INACTIVE SCRIPT'
RETURN
18
ответ дан 7 November 2019 в 09:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: