停止具有特定作业名称的所有SQL代理服务器作业

停止具有特定作业名称的所有SQL代理服务器作业,sql,sql-server,ssms,Sql,Sql Server,Ssms,非常偶尔,我会得到一个SQL Server代理作业,执行一个SSIS包,该包会暂停,从而阻止该作业将来的运行。我并不总是很快就明白这一点,这意味着一份工作可能会停滞几天。是否有方法停止所有以特定名称开头的SQL Server代理作业 目前,我正在使用下面的查询来停止正在运行的作业。但是,我希望能够将此应用于名称类似于“SSIS-%”的任何作业,而不必为每个SSIS作业写出它,也不必为将来的SSIS作业修改它。然后,我会设置一个作业,每天运行一次,以查找和停止任何暂停的作业 Declare @Ru

非常偶尔,我会得到一个SQL Server代理作业,执行一个SSIS包,该包会暂停,从而阻止该作业将来的运行。我并不总是很快就明白这一点,这意味着一份工作可能会停滞几天。是否有方法停止所有以特定名称开头的SQL Server代理作业

目前,我正在使用下面的查询来停止正在运行的作业。但是,我希望能够将此应用于名称类似于“SSIS-%”的任何作业,而不必为每个SSIS作业写出它,也不必为将来的SSIS作业修改它。然后,我会设置一个作业,每天运行一次,以查找和停止任何暂停的作业

Declare @Running int
Declare @SSISPackage varchar(50); 

set @SSISPackage = 'SSIS-Job_name';

/*Check if Job currently is running*/
SELECT 
    @running = CASE
                WHEN sa.start_execution_date IS NULL or (sa.start_execution_date IS NOT NULL AND sa.stop_execution_date IS NOT NULL) THEN 0
                WHEN sa.start_execution_date IS NOT NULL AND sa.stop_execution_date IS NULL THEN 1
                END 
FROM msdb.dbo.sysjobs sj
    INNER JOIN msdb.dbo.sysjobactivity sa ON sj.job_id = sa.job_id
WHERE sj.name = @SSISPackage;         

/*Stop Running Job*/
if @Running = 1
    BEGIN
        exec msdb.dbo.sp_stop_job @SSISPackage
    END;

这可能吗?有更好的方法吗?

为什么不解决根本问题并解决“停滞”问题?这显然是一个错误。谢谢@Larnu。我应该明确指出,我会回去解决导致停滞的任何问题,但我认为这种工作是一种有价值的故障保险。我同意拉努的观点。修复正在暂停的SSIS包。