VS2017 DBPROJ SQLCMD Проверка переменной на литеральное значение
Я хочу условно запустить сценарий после развертывания. Мой скрипт (в настоящее время) выглядит так:
declare @tier nvarchar(100) = $(tier)
if( @tier = 'TEST' )
begin
:r .\ConfigSeedData.TEST.sql
end
Я определил переменную в файле проекта, как подробно описано в разделе Использование переменной в сценарии сборки sql postdeployment?, Переменная (в настоящее время) определяется как TEST
(без кавычек, но я тоже пробовал с кавычками).
Тем не менее, независимо от того, как я пытаюсь изменить свой синтаксис, я получаю эту ошибку:.Net SqlClient Data Provider: Msg 207, Level 16, State 1, Line 875 Invalid column name 'TEST'.
Как проверить переменную sqlcmd для литерального значения, а не для столбца?
Я попытался добавить квадратные скобки вокруг $(), попытался получить доступ к значению напрямую (без присвоения nvarchar).
Спасибо!!
1 ответ
Получается, вам нужно заключить одинарные кавычки в переменную use. Для того, чтобы вышеуказанное работало, код должен быть:
if( '$(tier)' = 'TEST' )
Так что, хотя похоже, что вы используете буквальное$(tier)
"Это фактически вытащено из кавычек, интерпретировано и помещено обратно.