【问题标题】:Start SQL Server Agent job when case when statement returns true当语句返回 true 时启动 SQL Server 代理作业
【发布时间】:2017-03-23 09:47:13
【问题描述】:

我想创建一个过程,不断检查和比较源表和目标表之间的行数。如果源表的行数更高,那么我想执行 SQL Server 代理作业,我的过程应该等到该作业完成。

例如:

create proc 'XYZ'
    case when a.count(*) > b.count(*) then sp_start_job 'SSIS_package_ABC' 

    wait for 'package execution completion'

如果有人能指出正确的方向,我将不胜感激,因为我是 SQL Server 代理的新手。

【问题讨论】:

  • 你能不扭转局面吗?如果当前条件不适合它完成其余工作,您是否可以不让 SQL 代理作业频繁运行并提前退出

标签: sql ssis sql-agent-job sql-agent


【解决方案1】:

使用IF 语句代替CASE

DECLARE @SRC_TABLE_CNT INT,
    @DEST_TABLE_CNT INT

SELECT @SRC_TABLE_CNT = COUNT(*) FROM SOURCE_TABLE

SELECT @DEST_TABLE_CNT = COUNT(*) FROM DEST_TABLE

IF @SRC_TABLE_CNT > @DEST_TABLE_CNT
BEGIN
    sp_start_job 'SSIS_package_ABC'
END

【讨论】:

    猜你喜欢
    • 2010-11-16
    • 2014-05-29
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    相关资源
    最近更新 更多