用作业来停止作业

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

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_StopJob
GO
-- =============================================
-- Author:		yenange
-- Create date: 2017-12-07
-- Description:	如果某个作业还在运行, 则立即停止它
-- =============================================
CREATE PROCEDURE dbo.Proc_DBA_StopJob
	@jobName NVARCHAR(100)='sp_Archive'
AS
BEGIN
	SET 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
	)
	BEGIN
		EXEC msdb.dbo.sp_stop_job @jobName;
		PRINT @jobName+' 已停止!'
	END
	ELSE
	BEGIN
		PRINT @jobName+' 不存在或没有运行,不作处理!'
	END
END
GO
EXEC sys.sp_addextendedproperty 
	@name=N'Version', @value=N'1.0' , 
	@level0type=N'SCHEMA',@level0name=N'dbo', 
	@level1type=N'PROCEDURE',@level1name=N'Proc_DBA_StopJob'


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值