数据库项目 - INSERT语句出错

时间:2013-03-15 17:20:26

标签: sql-server visual-studio-2012 sqlcmd database-project post-build-event

我正在尝试使用Visual Studio 2012中的数据库项目来播种我的数据库。作为我的Post Deployment脚本的park,我有一个类似于以下内容的声明:

INSERT INTO SomeTable (SomeTextCol) Values (N'$(function(){});')

该列定义为NVARCHAR(MAX)

这会导致post build事件失败。然而奇怪的是,如果我使用SSMS执行语句就会成功。

这是因为数据库项目在后台使用SQLCMD吗?

如何修复此错误(同时仍然能够将jQuery插入表中) - 更改列值对我来说不是一个选项,因为我没有架构。

1 个答案:

答案 0 :(得分:2)

你是对的,这是由sqlcmd导致的,$是一个特殊字符。 解决这个问题的一个解决方案是连接两个字符串:

INSERT INTO SomeTable (SomeTextCol) Values (N'$'+'(function(){});');

这有点难看,但它确实有效。另一种方法是为jQuery使用不同的符号,如其完整名称:

INSERT INTO SomeTable (SomeTextCol) Values (N'jQuery(function(){});');

或者,如果你在函数中有很多对jQuery的引用:

(function(JQ){
  JQ(
     function(){
     //other references to JQ
     }
  );
 }
)(jQuery);

最后一个解决方案的另一个优势是,在页面上任何其他地方定义$JQ的任何人都不会破坏您的代码,因为“您的”JQ是在闭包中定义的仅对您的代码可见。