VS2017 DBPROJ SQLCMD Проверка переменной на литеральное значение - PullRequest
0 голосов
/ 29 января 2019

Я хочу условно запустить сценарий после развертывания.Мой сценарий (в настоящее время) выглядит следующим образом:

declare @tier nvarchar(100) = $(tier)
if( @tier = 'TEST' )
    begin
    :r .\ConfigSeedData.TEST.sql
    end

Я определил переменную в файле проекта, как подробно описано в Использование переменной в сценарии сборки после развертывания sql? .Переменная (в настоящее время) определена как TEST (без кавычек, но я тоже пробовал ее с кавычками).

Однако, как бы я ни пытался изменить свой синтаксис, я получаю эту ошибку: .Net SqlClient Data Provider: Msg 207, Level 16, State 1, Line 875 Invalid column name 'TEST'.

Как проверить переменную sqlcmd для литерального значения, а не для столбца?

Я пытался добавить квадратные скобки вокруг $ (), пытался напрямую получить доступ к значению(без назначения nvarchar).

Спасибо !!

1 Ответ

0 голосов
/ 08 февраля 2019

Получается, вам нужно заключить одинарные кавычки в переменную use.Для того, чтобы вышеприведенный код работал, код должен быть:

if( '$(tier)' = 'TEST' )

Так что, несмотря на то, что похоже, что вы используете литерал "$(tier)", он фактически вытаскивается из кавычек, интерпретируется иположить обратно.

...