Есть ли способ проверить состояние NOEXEC? - PullRequest
0 голосов
/ 07 мая 2019

Я долго искал и не могу найти ничего, с чего начать. Если это дубликат, мне очень жаль, но, возможно, мои ключевые слова во время поиска в Google не были лучшими.

У меня есть несколько сценариев, которые начинаются с IF, и если этот IF равен True, тогда флаг NOEXEC установлен на ON

Примерно так

if TRUE
BEGIN
    SET NOEXEC ON;  
END

Дело в том, что когда я выполняю любой скрипт после того, как для NOEXEC было установлено значение ON, он не запускается. Я уже проверил, и если я выполню команду SET NOEXEC OFF, остальные скрипты будут работать без проблем.

server.ConnectionContext.ExecuteNonQuery(script)

Должен ли я в любом случае проверить состояние NOEXEC или мне просто добавить его в начало всех моих скриптов?

Спасибо всем

Редактировать: пример сценариев, чтобы лучше объяснить проблему

1º Сценарий

select * from List
print'Done printing'

2º Сценарий

SET NOEXEC ON;
select * from List
print'Won't print'

3º Сценарий

select * from List
print'Done printing'

Мой ожидаемый результат будет иметь два сообщения «Готово к печати» в моем FileInfoMessage, но если я не выполню SET NOEXEC OFF, я получу печать только из первого сообщения

1 Ответ

3 голосов
/ 07 мая 2019

set noexec on останавливает выполнение команд SQL до тех пор, пока не встретится * 1002. *

Если была команда, которая выбирает текущее состояние noexec, она также не будет выполнена, поскольку noexec будет включен,Если он вообще выполнялся, это означало бы, что noexec выключен.

Возможно, команда разработчиков могла бы придумать еще одну «специальную» команду, которая обходит состояние noexec on и выполняется в любом случае (например, * 1009).* делает), давая вам текущее состояние noexec.Насколько я знаю, такой команды не существует, поэтому, хотя есть способ запросить текущие SET флаги , для noexec его нет.

Вы можете:

  • Использование нового объекта подключения для каждого сценария
  • Включение noexec off в конце каждого сценария, в котором вы его включаете
  • Выполнение пустышки select 1,Если вы вернули 1, noexec выключен.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...