Можете ли вы заставить SQLCMD немедленно запускать каждый оператор в скрипте без использования «GO»? - PullRequest
4 голосов
/ 09 февраля 2011

При запуске скрипта в SQLCMD, есть ли параметр, параметр или любой другой способ заставить его эффективно выполнять команду GO в конце каждого оператора SQL?

Это предотвратит необходимость вставки периодических команд GO в очень большие скрипты.

Ответы [ 2 ]

8 голосов
/ 09 февраля 2011

Нет.

SQLCMD должен сам реализовать полный анализатор T-SQL, чтобы определить, где находятся границы операторов.В то время как он существует в настоящее время, все, что ему нужно сделать, это найти строки с «GO» на них.

Определение границ операторов может быть довольно сложным, учитывая, что «;»терминаторы по-прежнему необязательны для большинства операторов.

2 голосов
/ 09 февраля 2011

Хммм, думаю, это не поможет, но является ответом на ваш вопрос:

http://msdn.microsoft.com/en-us/library/ms162773.aspx

-c cmd_end Указывает терминатор пакета.По умолчанию команды завершаются и отправляются на SQL Server, набирая слово «GO» в отдельной строке.Когда вы сбрасываете пакетный терминатор, не используйте зарезервированные ключевые слова Transact-SQL или символы, которые имеют особое значение для операционной системы, даже если им предшествует обратный слеш..

Если все ваши строки заканчиваются на;и нет;где угодно (в текстовых полях, например) попробуйте

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