2010-10-29 3 views
2

Выполнение следующего скрипта через sqlcmd завершается с ошибкой. Однако выполнение его через ssmo или SQL Server Management Studio работает.Использование двойных кавычек в сценарии T-SQL не выполняется в SQLCMD, но не SSMO

sqlcmd -S . -d test -i input.sql 

input.sql:

CREATE FUNCTION test() 
RETURNS @t TABLE ("ID" INT) 
AS 
BEGIN 
RETURN 
END 

Даже когда я поставил SQL Server Management Studio в Sqlcmd режиме, он до сих пор не удается. Это проблема, поскольку мы тестируем наши скрипты с помощью SSMS, но развертываем с помощью SQLCMD. Таким образом, мы обнаруживаем, что наш код не работает при попытке развертывания.

Почему sqlcmd ведет себя так? Есть ли способ отключить его?

+0

Почему вы включаете имя поля с кавычками? Если вы хотите деактивировать идентификатор, используйте [ID]. – Lazarus

ответ

5

Если вам действительно нужно использовать двойные кавычки для разделения идентификаторов в сценариях, вам нужно установить опцию quoted_identifier на SQLCMD с помощью переключателя -Ienable. Он по умолчанию отключен в SQLCMD, но по умолчанию включен в SSMS, поэтому ваши тесты работают в SSMS.

Узнайте больше о QUOTED_IDENTIFIER here.

0

Используйте квадратные скобки для этого: [ID]

 Смежные вопросы

  • Нет связанных вопросов^_^