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

时间:2018-08-22 12:34:41

标签: sql sql-server stored-procedures

我有一个中央管理数据库,当将新数据库还原到环境中时,该数据库可以收集一些信息并为其他各种任务运行一些动态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

谢谢

1 个答案:

答案 0 :(得分:1)

除了创建dynamic脚本外,您还可以将一个脚本与要创建的所有procedures一起使用(可以在SSMS中单击两次以编写所有想要的proc脚本),然后,您可以在要创建这些过程的数据库的上下文中手动运行此脚本,或者通过将包含此脚本的文件与sqlcmd一起传递到-i并向{{1}传递正确的数据库名称}。

Use the sqlcmd Utility处您可以看到示例。