将参数传递给sql代理作业Transact-SQL脚本(T-SQL)

时间:2016-05-09 21:00:45

标签: sql sql-server stored-procedures parameters

我们在仓库服务器上有10个数据库(每个位置1个)和1个主数据库。这10个数据库与另一台服务器上的OLTP对应数据库相关联。我在master数据库中创建了一个存储过程,用于将数据从源移动到目标。

我没有创建游标并循环遍历所有数据库,而是试图查看是否有办法将参数传递给每个数据库的SQL Server代理作业 - 基本上有10个SQL代理作业(每个数据库1个) )

Job>中是否有办法?步骤>命令窗口为学校声明一个变量并将其传递给复制存储过程?

工作1

Declare @Source_DB varchar(max)
        @Target_DB Varchar(max)

Set @Source_DB = ‘School_1’
Set @Target_DB= ‘DW_School_1’

Exec Replicate @Source_DB, @Target_DB

工作2

Declare @Source_DB varchar(max)
        @Target_DB Varchar(max)

Set @Source_DB = ‘School_2’
Set @Target_DB= ‘DW_School_2’

Exec Replicate @Source_DB, @Target_DB

工作3

Declare @Source_DB varchar(max)
        @Target_DB Varchar(max)

Set @Source_DB = ‘School_3’
Set @Target_DB= ‘DW_School_3’

Exec Replicate @Source_DB, @Target_DB

工作4 ...... ....

1 个答案:

答案 0 :(得分:0)

使用sp_MSforeachdb

这样的东西
DECLARE @command varchar(1000) 
--SELECT @command = 'USE ? SELECT ''?'' as mainDB, ''DW_?'' as warehouseDB' 
SELECT @command = 'Exec Replicate ?, ''DW_?'''

print @command

EXEC sp_MSforeachdb @command