【问题标题】:Pass parameters to sql agent job Transact-SQL Script (T-SQL)将参数传递给 sql 代理作业 Transact-SQL 脚本 (T-SQL)
【发布时间】:2016-09-04 15:43:30
【问题描述】:

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

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

有没有办法在 Job > Steps > Command Window 中为学校声明一个变量并将其传递给复制存储过程?

工作 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……

【问题讨论】:

  • 查看系统 proc sp_MSforeachdb

标签: sql sql-server stored-procedures parameters


【解决方案1】:

类似这样的使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多