2016-09-07 2 views
0

Я пытаюсь написать скрипт, чтобы скопировать хранимую процедуру в другую базу данных на сервере:Как скопировать хранимую процедуру из одной базы данных в другую базу данных на одном сервере динамически

SELECT @def = [definition] 
FROM [@from_db].sys.sql_modules 
WHERE object_id = OBJECT_ID('MyProcedure') 

EXEC(@def); 

Однако это не Как копировать хранимую процедуру из одной базы данных в другую?

ответ

1

Попробуйте

DECLARE @SQL NVARCHAR(max) = '' 
    ,@TargetDBName NVARCHAR(255) = 'TargetDBName' 

DECLARE c CURSOR 
FOR 
SELECT DEFINITION 
FROM SourceDBName.[sys].[procedures] p 
INNER JOIN SourceDBName.sys.sql_modules m ON p.object_id = m.object_id 

OPEN c 

FETCH NEXT 
FROM c 
INTO @sql 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @sql = REPLACE(@sql, '''', '''''') 
    SET @sql = 'USE [' + @TargetDBName + ']; EXEC(''' + @sql + ''')' 

    EXEC SP_EXECUTESQL @sql 

    FETCH NEXT 
    FROM c 
    INTO @sql 
END 

CLOSE c 

DEALLOCATE c 
Смежные вопросы