1

我想用在Visual Studio 2012數據庫項目作爲我的部署後腳本的公園我有類似如下的語句種子我的數據庫:數據庫項目 - 錯誤使用INSERT語句

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

的列定義爲NVARCHAR(MAX)

這會導致構建後事件失敗。然而奇怪的是,如果我使用SSMS執行語句,它會成功。

這是由於數據庫項目在後臺使用SQLCMD的原因造成的嗎?

我該如何解決這個錯誤(同時仍然能夠將jQuery插入到表中) - 更改列值不是我的選擇,因爲我沒有擁有架構。

回答

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的人都不會破壞您的代碼。

+0

非常感謝塞巴斯蒂安 – 2013-03-16 14:42:17