我有一个中央管理数据库,当将新数据库还原到环境中时,该数据库可以收集一些信息并为其他各种任务运行一些动态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
谢谢
答案 0 :(得分:1)
除了创建dynamic
脚本外,您还可以将一个脚本与要创建的所有procedures
一起使用(可以在SSMS
中单击两次以编写所有想要的proc脚本),然后,您可以在要创建这些过程的数据库的上下文中手动运行此脚本,或者通过将包含此脚本的文件与sqlcmd
一起传递到-i
并向{{1}传递正确的数据库名称}。
在Use the sqlcmd Utility处您可以看到示例。