VS2017 DBPROJ SQLCMD 字面值变量测试

VS2017 DBPROJ SQLCMD Variable Test for Literal Value

我想有条件地 运行 一个 post 部署脚本。我的脚本(当前)如下所示:

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

我已经在项目文件中定义了变量,详见Using variable in sql postdeployment build script?。该变量(当前)定义为 TEST(没有引号,但我也尝试过使用引号)。

但是,无论我如何尝试扭曲我的语法,我都会不断收到此错误: .Net SqlClient Data Provider: Msg 207, Level 16, State 1, Line 875 Invalid column name 'TEST'.

如何检查 sqlcmd 变量的文字值,而不是列?

我尝试在 $() 周围添加方括号,尝试直接访问该值(不分配给 nvarchar)。

谢谢!!

事实证明,您需要在变量 use 周围加上单引号。要完成上述工作,代码为:

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

因此,尽管看起来您使用的是文字“$(tier)”,但实际上它是从引号中抽出、解释并放回原处的。