SqlPackage传递变量至.dacpac时右方括号被转义的解决方法咨询
解决SqlPackage传递变量时方括号被篡改的问题
问题原因
SqlPackage采用类SQLCMD的变量解析规则,会将变量值中的单个方括号]自动转译为两个]],以此避免脚本中变量引用的边界冲突。这就是传入abc]123却得到abc]]123的原因。
解决方法
要让变量值最终保留单个],在命令行传递变量时需用反斜杠\对]进行转义。修改后的执行命令如下:
sqlpackage /v:TextTest="abc\]123" /Action:Publish /SourceFile:"my.dacpac" /TargetDatabaseName:MyDb /TargetServerName:"."
执行该命令后,SqlPackage会将转义后的\]解析为单个],变量$(TextTest)的输出值就会是预期的abc]123。
内容的提问来源于stack exchange,提问作者jeoffman
相关产品推荐
相关产品推荐

