2008-12-16 75 views
1

在MS SQL Server Management Studio中2005:SQL工作室 - 「修改存儲過程」 中的腳本錯誤

如果你有設置工具|選項|腳本| 「包括IF NOT EXISTS子句」 設置爲true,修改存儲過程將創建一個甚至不起作用的奇怪腳本。它看起來像下面這樣:(省略號用於縮寫)

SET QUOTED_IDENTIFIER ON 
GO 
IF NOT EXISTS [...] 
BEGIN 
EXEC dbo.sp_executesql @statement = N' 
ALTER procedure [dbo].[p_Procedure] 
[...] 
' 
END 

這顯然是行不通的,因爲ALTER語句被稱爲唯一的辦法,就是如果存儲過程不存在。

問題是這樣的:有什麼方法可以改變這個生成的代碼?某處有模板(這似乎與模板工具中的構建無關)?

(這種行爲有輕微的解釋:腳本CREATE語句生成其中IF NOT EXISTS更有意義相同的代碼)

回答

0

有對MS-反饋網站這個話題的一些問題。 這裏有一個:

https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=260519

以下是關於這個問題的一個評論(從上面的鏈接頁面的底部):

在SQL2000的做法是如果 存在,DROP其次由CREATE。 完美無瑕地涵蓋了所有 個案。它非常好,我們建立了 我們的部署從這個腳本 模型。由於SQL2005進入了我們 的世界裏,我們有手動,繁瑣 解決方法更換自動 腳本這是在招 SQL2000丟失。

請不要重新進行添加的。如果存在,DROP 隨後是CREATE approac。這是偉大的 的方式