假设我有一个存储过程proc_MyTestProc。
我想创建一个名为proc_MyTestProc_ {timestamp}的proc的备份副本,并在其位置创建此proc的新实例。这是我目前的方法:
此方法的问题在于它无法与复制一起使用。原始过程保留相同的对象ID。在步骤#2中创建的过程是我想要复制到另一个DB的过程,但它有一个新的对象ID,因此它不会复制。
是否有SP_RENAME的替代方法可以使用新的对象ID创建对象的副本?
我正在运行SQL Server 2005。
答案 0 :(得分:0)
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
你可以随时做这样的事情......