2008-12-16 78 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。这是伟大的 的方式