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)"Это фактически вытащено из кавычек, интерпретировано и помещено обратно.

Другие вопросы по тегам