Приостановить сценарий SQL-сервера? - PullRequest
3 голосов
/ 18 декабря 2009

Я пытаюсь разработать сценарий, который я смогу запустить в базе данных SQL Server 2008 [Express]. База данных содержит около 10-15 таблиц, которые обновляются различными значениями / новыми полями и т. Д.

Однако это не полностью автоматизированный процесс, и в моменты обновления было бы здорово приостановить выполнение сценария, создать окно сообщения изнутри сценария, что позволит пользователю выполнить <something>. Нажатие OK на сценарии продолжит его выполнение и завершит миграцию.

Существует ли такая вещь?

Ответы [ 3 ]

2 голосов
/ 18 декабря 2009

Нет прямого способа заставить скрипт T-SQL приостановить работу и ждать ввода пользователя.Команда WAITFOR заставит выполнение ждать определенный период времени, но не разрешит взаимодействие с пользователем.

(Очень) грубое решение состоит в том, чтобы разбить процесс на маленькие кусочки скрипта и контролировать их выполнение.через старый добрый сценарий BATCH.Например: -

SQLCMD -S <servername> -E -I <path_to_script_one>
PAUSE
SQLCMD -S <servername> -E -I <path_to_script_two>

Очевидно, что у этого подхода есть и недостатки;обработка ошибок становится громоздкой и проблематичной, поскольку нет простого способа определить успех или неудачу.Команды BATCH относительно ограничены, хотя различные языки сценариев могут предоставлять больше функциональности.

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

Если вы хотите "богатый" опыт, вы должны рассмотреть пользовательский интерфейс, созданный с помощью инструмента по вашему выбору ...

0 голосов
/ 18 декабря 2009

Сценарии SQL Server не поддерживают произвольное приостановление и возобновление выполнения.

Функции отладки в SQL 2008 Management Studio позволяют приостановить выполнение сценария на одной или нескольких точках останова, но вы не сможете гарантировать, что пользователь выполняет ваш сценарий из этой среды.

Если вам необходимо приостановить выполнение сценария на неопределенное время для выполнения пользователем действий, самый простой способ сделать это - разбить его на несколько файлов сценария.

Если вам нужна автоматизация, вы можете запустить их из файла .cmd с помощью команды DOS PAUSE между сценариями.

0 голосов
/ 18 декабря 2009

Вы можете сделать паузу, используя WAITFOR . Я сомневаюсь, что вы действительно можете открыть окно сообщения из скрипта T-SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...