【问题标题】:VS2017 DBPROJ SQLCMD Variable Test for Literal ValueVS2017 DBPROJ SQLCMD 变量测试字面值
【发布时间】:2019-06-22 00:01:57
【问题描述】:

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

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)。

谢谢!!

【问题讨论】:

    标签: sql-server-2017 dbproj


    【解决方案1】:

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

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

    因此,即使看起来您使用的是文字“$(tier)”,它实际上是从引号中提取、解释并放回的。

    【讨论】:

      猜你喜欢
      • 2020-06-15
      • 2016-12-20
      • 2016-05-11
      • 1970-01-01
      • 2017-12-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多