我想在SQL中创建一个存储过程,该存储过程仅执行在过程本身的参数验证中指定的作业。例如,我希望我的开发团队只能传递我指定的作业名称,这样他们就可以运行仅需要的作业。从他们的角度来看,它将看起来像这样。
Exec sp_run_only_jobs myjob
或
Exec sp_run_only_jobs myotherjob
如果他们尝试运行除上述两项以外的其他作业,则应失败并显示错误消息。
我
答案 0 :(得分:2)
您可以创建一个存储过程,以检查指定的作业名称是否属于特定的作业列表,然后执行该作业。否则,抛出错误消息。
CREATE PROCEDURE dbo.usp_run_only_jobs @JobName NVARCHAR(4000)
AS
BEGIN
IF @JobName EXISTS IN ('AllowedJob1', 'AllowedJob2')
BEGIN
EXEC msdb.dbo.sp_start_job @JobName ;
END
ELSE
BEGIN
THROW 51000, 'The specified job is not allowed to be started', 1;
END
END