如何使用新名称创建 SQL Server 存储过程或视图的重复副本?

发布于 2024-12-01 07:04:30 字数 381 浏览 0 评论 0原文

假设我有一个存储过程 proc_MyTestProc。

我想创建一个名为 proc_MyTestProc_{timestamp} 的过程的备份副本,并在其位置创建该过程的新实例。这是我当前的方法:

  1. 在 proc_MyTestProc 上运行 sp_rename,附加时间戳。
  2. 为新版本的 proc_MyTestProc 运行新的 CREATE 脚本。

此方法的问题是它不适用于复制。原始过程保留相同的对象 ID。我想要将步骤 #2 中创建的过程复制到另一个数据库,但它具有新的对象 ID,因此无法复制。

是否有替代 SP_RENAME 的方法来创建具有新对象 ID 的对象副本?

我正在运行 SQL Server 2005。

Suppose I have a stored procedure proc_MyTestProc.

I want to create a backup copy of this proc called proc_MyTestProc_{timestamp}, and create a new instance of this proc in its place. Here is my current method:

  1. Run sp_rename on proc_MyTestProc, appending the timestamp.
  2. Run the new CREATE script for the new version of proc_MyTestProc.

The problem with this method is that it doesn't work with replication. The original procedure retains the same object ID. The procedure created in step #2 is what I want to be replicated to another DB, yet it has a new object ID, so it doesn't replicate.

Is there an alternative to SP_RENAME that creates a copy of the object with a new object ID?

I am running SQL Server 2005.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灼疼热情 2024-12-08 07:04:30
DECLARE @old VARCHAR(255),
        @new VARCHAR(255),
        @sql NVARCHAR(MAX),
        @myid UNIQUEIDENTIFIER

SET @myid = NEWID();


SELECT @old = 'invoice_validation_sp', @new = @old + CONVERT(VARCHAR(20),GETDATE(), 112)

SELECT @sql = REPLACE(OBJECT_DEFINITION(OBJECT_ID),@old, @new) 
FROM sys.procedures 
WHERE name = @old

EXECUTE sp_executesql @sql

你总是可以做这样的事情......

DECLARE @old VARCHAR(255),
        @new VARCHAR(255),
        @sql NVARCHAR(MAX),
        @myid UNIQUEIDENTIFIER

SET @myid = NEWID();


SELECT @old = 'invoice_validation_sp', @new = @old + CONVERT(VARCHAR(20),GETDATE(), 112)

SELECT @sql = REPLACE(OBJECT_DEFINITION(OBJECT_ID),@old, @new) 
FROM sys.procedures 
WHERE name = @old

EXECUTE sp_executesql @sql

You can always do something like this...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文