将存储过程从一个数据库复制到另一个数据库



我有一个中央管理数据库,当新数据库恢复到环境中时,它会整理一些信息并为各种其他任务运行一些动态SQL。其中一个任务通过动态SQL完成会有点复杂,所以我想到了在中央数据库中创建一个主副本存储过程,并在还原后将其复制到新数据库。

我在这里看到过一些人们试图这样做的例子,但我什么都没能打球。

以下是我试图在概念上实现的目标,请注意,我试图满足以这种方式创建的潜在多个存储过程,只是为了将来的证明。

declare @sql nvarchar(max), @DatabaseName nvarchar(200)
set @DatabaseName = 'TargetDatabase'
set @sql =  
(
SELECT definition + char(13) + 'GO' 
FROM sys.sql_modules s 
INNER JOIN sys.procedures p 
ON [s].[object_id] = [p].[object_id] WHERE p.name LIKE '%mastercopy%'
)
exec @sql

谢谢

与其创建脚本dynamic,不如使用一个脚本来创建要创建的所有procedures(您可以使用 2 单击SSMS来编写所需的所有进程的脚本(,然后在要创建这些过程的数据库上下文中手动运行此脚本,或者将此脚本的文件传递给具有-isqlcmd,并使用-d.

在这里使用 sqlcmd 实用程序,您可以看到示例。

最新更新