我正在尝试编写一个脚本,当当前正在运行SQL代理作业时,该脚本将作为错误退出。如果没有正在运行的作业,我也希望它成功(退出0)。
类似下面的内容。
IF
EXEC msdb.dbo.sp_help_job @execution_status=1
THEN
RAISE ERROR
ELSE
COMPILE SUCCESS
答案 0 :(得分:0)
以下代码将为您提供帮助。您可能需要更改代码以执行所需的操作。 首先,您需要创建一个存储过程:
CREATE PROCEDURE YourProc
AS
BEGIN
DECLARE @ErrMsg NVARCHAR(MAX), @ErrSeverity INT
SET XACT_ABORT OFF
BEGIN TRY
IF EXISTS (
SELECT *
FROM msdb.dbo.sysjobs_view job
INNER JOIN msdb.dbo.sysjobactivity activity
ON job.job_id = activity.job_id
WHERE activity.run_Requested_date IS NOT NULL
AND activity.stop_execution_date IS NULL)
BEGIN
SELECT @ErrMsg = 'There is a Job already running',
@ErrSeverity = 1;
RAISERROR (@ErrMsg, @ErrSeverity, 1);
END
ELSE
PRINT 'No Jobs running'
END TRY
BEGIN CATCH
SELECT @ErrMsg = ERROR_MESSAGE(),
@ErrSeverity = ERROR_SEVERITY();
RAISERROR (@ErrMsg, @ErrSeverity, 1);
END CATCH
END
然后,您可以调用过程:
EXEC YourProc