Если ваш sql-скрипт настроен следующим образом:
DECLARE @myValue VARCHAR(30)
SET @myValue = $(MyParameter)
SELECT @myValue
Тогда вы можете получить значение, заключенное в двойные кавычки, в @myValue, просто заключив свой параметр в одинарные кавычки:
sqlcmd -S MyDb -i myscript.sql -v MyParameter='"123"'
Это работает, потому что -v заменит строку $(MyParameter)
текстом '"123"'
.Результирующий сценарий будет выглядеть следующим образом перед его выполнением:
DECLARE @myValue VARCHAR(30)
SET @myValue = '"123"'
SELECT @myValue
Надеюсь, это поможет.
РЕДАКТИРОВАТЬ Этот образец работает для меня (проверено на SQL Server 2008, Windows Server 2K3).Он вставляет запись в табличную переменную @MyTable
, а значение в поле Description
заключено в двойные кавычки:
MyScript.sql (нет необходимости в setvar):
DECLARE @MyTable AS TABLE([AccountTypeID] INT, [Description] VARCHAR(50))
INSERT INTO @MyTable ([AccountTypeID] ,[Description])
VALUES(1, $(Parameter))
SELECT * FROM @MyTable
SQLCMD:
sqlcmd -S %serverName% -E -d MSDB -i MyScript.sql -m 1 -v Parameter='"MyValue"'
Если вы запустите этот скрипт, вы должны получить следующий вывод, который, я думаю, именно то, что вы ищете:
(1 rows affected)
AccountTypeID Description
------------- --------------------------------------------------
1 "MyValue"