【问题标题】:Is it possible to modify the "alter procedure" template in SSMS?是否可以修改 SSMS 中的“更改程序”模板?
【发布时间】:2014-06-18 03:29:15
【问题描述】:

我知道如何在 SSMS 中修改“CREATE PROC”模板,我想知道是否可以修改“ALTER PROC”模板,当我右键单击现有存储过程并单击“修改”时会显示该模板。当我点击“修改”时,会生成一个脚本“ALTER PROC ...”,我希望我可以修改它以便它可以生成

IF EXISTS ()... DROP PROC ... CREATE PROC ...

而不是

ALTER PROC

或者,如果我可以创建一个新模板来实现相同的目标,那也很好。

谢谢。

【问题讨论】:

  • 只是出于好奇,为什么你更喜欢 drop/create 来改变?
  • @zespri,我有几个生产数据库,它们应该与开发数据库具有相同的结构。但他们没有。因此,当存储过程发生更改时,我必须创建一个“删除并创建”脚本并在所有这些数据库上运行它们,我想确保成功创建存储过程,无论它们是否存在于数据库中。我们没有复杂的权限配置,所以我觉得这种方式是可以的。

标签: sql-server ssms sql-server-2008


【解决方案1】:

我不认为有,但你几乎可以伪造它。为“如果存在...丢弃”部分创建一个 sn-p(在我的 SSMS 版本中,工具菜单中有一个代码片段管理器)。现在,编写您的程序,在顶部插入您的 sn-p,您应该可以开始了。

如果我没有提到删除过程会删除已授予或拒绝的任何显式权限,那我就失职了。如果你这样做是为了得到一个幂等脚本,我采用了这个习语来避免这个问题:

if object_id('someSchema.yourProc') is not null
   set noexec on;
go
create procedure someSchema.yourProc
as
   print 'not yet implemented'
go
set noexec off;
go
alter procedure someSchema.yourProc as
begin
   -- your actual proc
end

【讨论】:

  • sn-p 是个好主意。我们没有复杂的权限配置,所以一直drop和create都没问题。
【解决方案2】:

是的,在修改选项中,您可以直接修改或alter prc

ALTER PROCEDURE [dbo].[sp_name]
  @paramater INT , .... other
AS
BEGIN
   .... statement
END

以下选项的好处是,当您提供给某人或部署在服务器上时。最好给出以下类型的陈述。

先验证该Procedure是否存在,如果存在则先drop再创建。

IF EXISTS ()... DROP PROC ... CREATE PROC ...

修改选项是直接给的右键修改选项,修改选项,有利于开发。您知道在开发时喜欢更改表或更改 sp 参数名称。这也包括当你给有当前 sp 的人时。

虽然提供了一些,但可以使用存在选项删除和创建,因此第三方可以轻松执行而不会出错。

【讨论】:

  • 你回答的第一行所指的“修改选项”是什么?
  • 因为在开发过程中你不能删除和创建。只需转到修改并执行它。因为你什么都知道,也验证一下。在部署时,您并不知道一切。
  • 那么“修改选项”是什么?
  • 它根本不解决更改 SSMS 模板的问题。更改 SSMS 模板就是问题所在。
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2011-09-10
  • 2018-06-29
  • 2018-05-27
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多