Как создать дубликат копии сохраненного в SQL Server процесса или представления с новым именем? - PullRequest
0 голосов
/ 23 августа 2011

Предположим, у меня есть хранимая процедура proc_MyTestProc.

Я хочу создать резервную копию этого процесса с именем proc_MyTestProc_ {timestamp} и создать на его месте новый экземпляр этого процесса. Вот мой текущий метод:

  1. Запустите sp_rename для proc_MyTestProc, добавив отметку времени.
  2. Запустите новый скрипт CREATE для новой версии proc_MyTestProc.

Проблема этого метода в том, что он не работает с репликацией. Исходная процедура сохраняет тот же идентификатор объекта. Процедура, созданная на шаге №2, - это то, что я хочу скопировать в другую БД, но у нее есть новый идентификатор объекта, поэтому она не реплицируется.

Есть ли альтернатива SP_RENAME, которая создает копию объекта с новым идентификатором объекта?

Я использую SQL Server 2005.

1 Ответ

0 голосов
/ 23 августа 2011
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

Вы всегда можете сделать что-то подобное ...

...