SQL Studio - “修改存储过程”脚本错误

时间:2008-12-16 22:30:49

标签: ssms

在MS SQL Server Management Studio 2005中:

如果将设置工具|选项|脚本|“包含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更有意义)

1 个答案:

答案 0 :(得分:0)

MS-feedback网站上有关于此主题的一些问题。 这是一个:

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

以下是关于该问题的一条评论(从上面链接的页面底部):

  

在SQL2000中,方法是If   存在,DROP后跟CREATE。   这件衣服完美无瑕,涵盖了所有   案例。它非常好,我们建造了   我们部署此脚本   模型。自SQl2005进入我们的   世界,我们有手工,繁琐   解决方案来替换自动化   脚本在移动中丢失了   SQL2000。

     

请读取If exists,DROP   然后是CREATE approac。它是   伟大的方式