2014-01-20 76 views
0

我使用dotnet SqlCommand有一個奇怪的錯誤。SqlCommand和多行註釋錯誤

基本上我在執行具有與在那裏的前一個GO多行註釋命令文本:

/*IF OBJECT_ID ('dbo.xxx', 'P') IS NOT NULL 
DROP PROCEDURE [dbo].[xxx] 
GO 
*/ 

select * from dbo.abc 

,我得到的是錯誤「缺少結束註釋標記* /」

我能夠縮小錯誤,似乎問題與GO有關。如果我刪除了G O它工作。

如果我執行這個命令,看在SQL配置文件所執行的查詢,我得到:

/*IF OBJECT_ID ('dbo.xxx', 'P') IS NOT NULL 
DROP PROCEDURE [dbo].[xxx] 

所以沒有執行查詢的一部分......和結束註釋標記缺少

我「已經搜索,看看是否因爲我已經看到了這個帖子在MSDN上有類似GO問題是任何人有這個問題...

http://social.msdn.microsoft.com/Forums/sqlserver/en-US/7e5ef20d-4b19-4930-9b1f-64304e6987e2/missing-end-comment-mark?forum=sqlreplication

我是唯一有這個問題的人嗎?有沒有解決方法?

+2

將註釋傳遞到您通過SQLCommand運行的查詢中的意義何在?我知道您何時將存儲過程保存到服務器,但我不明白這一點。 –

+0

我們有一個能夠將sql腳本部署到數據庫的工具。基本上,而不是使用工具A部署到SQL Server,工具B部署到Oracle,工具C部署到MySQL等...我們有一個工具,它可以做的事情,如數據庫版本控制,部署到「任何「數據庫引擎等...要將sql代碼部署到數據庫,我們創建一個DbCommand並執行腳本。有時腳本包含GO字符串的註釋。 –

+0

那麼,不要在評論裏面去,不知道你期望的其他解決方案。 –

回答

4

我沒有看到這一點,但問題是GOGO不是Transact-SQL,它是SSMS等工具的批處理分隔符。如果沒有GO(或者沒有多行註釋,或者任何評論,請首先嚐試)嘗試。

+0

我知道問題出在GO上。我不知道的是爲什麼它在評論中被解釋。 –

+0

因爲它在評論之前首先被解析。 –