用作业来停止作业

来源:互联网 发布:巨人网络最新招聘信息 编辑:程序博客网 时间:2024/05/21 22:31

有的作业非常大, 可能运行时间超长,从而影响白天正常生产, 因此非常有必要加一个作业来主动停止大作业。

1. 创建存储过程, 脚本如下。

2. 新增一个作业, 名称为: Stop_BigJob

步骤语句: EXEC dbo.Proc_DBA_StopJob 'sp_Archive'  --作业名称自己改

作业计划:每天6点整运行

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].Proc_DBA_StopJob') AND type in (N'P', N'PC'))DROP PROCEDURE [dbo].Proc_DBA_StopJobGO-- =============================================-- Author:yenange-- Create date: 2017-12-07-- Description:如果某个作业还在运行, 则立即停止它-- =============================================CREATE PROCEDURE dbo.Proc_DBA_StopJob@jobName NVARCHAR(100)='sp_Archive'ASBEGINSET NOCOUNT ON;IF EXISTS(SELECT 1 FROM MASTER.sys.sysprocesses AS A INNER JOIN msdb.[dbo].[sysjobs] AS B ON a.[program_name] LIKE 'SQLAgent%'+RIGHT(CAST(B.[job_id] AS VARCHAR(100)),10)+'%'AND b.[name] = @jobName)BEGINEXEC msdb.dbo.sp_stop_job @jobName;PRINT @jobName+' 已停止!'ENDELSEBEGINPRINT @jobName+' 不存在或没有运行,不作处理!'ENDENDGOEXEC sys.sp_addextendedproperty @name=N'Version', @value=N'1.0' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'PROCEDURE',@level1name=N'Proc_DBA_StopJob'


原创粉丝点击