Использование двойных кавычек в сценарии T-SQL завершается неудачно в SQLCMD, но не в SSMO - PullRequest
5 голосов
/ 29 октября 2010

Сбой выполнения следующего сценария через sqlcmd.Тем не менее, выполнение его через ssmo или SQL Server Management Studio работает.

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 ведет себя так?Есть ли способ его отключить?

Ответы [ 2 ]

7 голосов
/ 29 октября 2010

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

Подробнее о QUOTED_IDENTIFIER здесь .

0 голосов
/ 29 октября 2010

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

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