【问题标题】:Database Project - Error with INSERT statement数据库项目 - INSERT 语句出错
【发布时间】:2013-03-15 17:20:26
【问题描述】:

我正在尝试使用 Visual Studio 2012 中的数据库项目为我的数据库播种。作为我的部署后脚本的公园,我有一个类似于以下内容的语句:

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

列定义为NVARCHAR(MAX)

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

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

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

【问题讨论】:

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


    【解决方案1】:

    你是对的,这是由 $ 是特殊字符的 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 是在仅对您的代码可见的闭包中定义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多