В TSQL, команда SET должна в своем собственном пакете? - PullRequest
0 голосов
/ 06 июля 2010

У меня сейчас проблема. Я использую ruby ​​и SQLCMD для генерации некоторых скриптов TSQL. Теперь я хочу проверить синтаксис сгенерированного скрипта. Я использую следующий SQL:

SET PARSEONLY ON;
SELECT 888
SET PARSEONLY OFF;

Я проверяю это в SSMS, когда вы выбираете эти три оператора в качестве целого пакета, сервер sql выдаст мне результат, который равен 888. Я не хочу фактический результат, я просто хочу проверить, используется ли синтаксис мой сценарий правильный Поэтому я попробовал следующий SQL:

SET PARSEONLY ON;
GO
SELECT 888
GO
SET PARSEONLY OFF;
GO

Теперь, если я выберу все эти операторы как целый пакет, SQL Server просто скажет мне Команда (и) успешно выполнена . Итак, я хочу знать, должна ли команда SET в своем собственном пакете?

1 Ответ

3 голосов
/ 07 июля 2010

Yousui, Нет, то, что вы делаете, почти правильно; Читайте здесь для получения дополнительной информации. Только одно: вы не можете использовать SET PARSEONLY ON и SET PARSEONLY OFF в одном выражении, потому что запрос будет выполнен, а не проанализирован. Итак, попробуйте это:

SET PARSEONLY ON
*-- YOUR QUERY*
GO
SET PARSEONLY OFF 

Просто помните, что PARSEONLY проверяет только синтаксис, а не объекты, например таблицы и т. Д. Если вы хотите выполнить проверку объектов и проверки, используйте NOEXEC;

SET NOEXEC ON GO
*-- YOUR QUERY HERE* 
SET NOEXEC OFF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...