Mob*_*ord 5 sql escaping localdb visual-studio-2012
我有一个SQL数据项目,它是从我的生产数据库的模式创建的.它将所有存储过程引入到项目中,并且我尝试将生成的脚本部署到localdb以进行脱机开发.
问题是,似乎SQL数据项目正在尝试验证它生成的SQL脚本,但它遇到了包含字符串的第一个实例$(
.
例1
INSERT INTO mytable (text) VALUES ('$(')
这会导致错误
$('正在解析时遇到了不正确的语法.
例2
INSERT INTO mytable (text) VALUES ('$(this')
这会导致错误
$(正在解析此'时遇到了错误的语法.
它似乎是SQL数据项目解析验证中的一个错误,即使脚本在SQL Management Studio中正常运行,也会阻止部署成功.
更新
我尝试了一些想法,似乎问题是在SQL数据项目解析字符串和遭遇时$(
.此外,$(在字符串中的所有内容都会被错误捕获,直到下一个单引号实例(无论是转义单引号还是字符串单引号的结尾)
SQL Data Tools 生成的用于部署数据库的脚本似乎$()
用作变量替换的一种方式。为了解决这个问题,我必须将字符串的内容替换为
CHAR(36) + '()'
代表
$()
这样解析器就不会尝试将其视为变量。