Sql 对作业名称进行参数验证的存储过程
我想在SQL中创建一个存储过程,它只执行在过程本身的参数验证中指定的作业。例如,我希望我的开发团队只能传递我指定的作业名称,这样他们才能运行他们只需要的作业。从他们的角度来看,它会像这样Sql 对作业名称进行参数验证的存储过程,sql,Sql,我想在SQL中创建一个存储过程,它只执行在过程本身的参数验证中指定的作业。例如,我希望我的开发团队只能传递我指定的作业名称,这样他们才能运行他们只需要的作业。从他们的角度来看,它会像这样 Exec sp_run_only_jobs myjob 或 如果他们尝试运行上述两个作业以外的作业,则会失败并显示错误消息 I您可以创建一个存储过程来检查指定的作业名称是否属于特定的作业列表,然后执行该作业。否则,抛出错误消息 CREATE PROCEDURE dbo.usp_run_only_jobs @J
Exec sp_run_only_jobs myjob
或
如果他们尝试运行上述两个作业以外的作业,则会失败并显示错误消息
I您可以创建一个存储过程来检查指定的作业名称是否属于特定的作业列表,然后执行该作业。否则,抛出错误消息
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
你能提供更多细节吗?你试过什么?什么不起作用?我想你知道如何从命令行运行作业吧
exec msdb.dbo.sp_start_job@job_name='myjob'
剩下的由您决定。这有什么问题吗?过程代码是高度特定于供应商的-因此请添加一个标记来指定您是否正在使用mysql
、postgresql
、sql server
、oracle
或db2
-或其他完全不同的代码。谢谢Venkat,这段代码似乎可以工作。“我明天会试一试,让你知道。”Darkswap很高兴,它成功了。请将其标记为答案,以便对其他人有所帮助。
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