Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对作业名称进行参数验证的存储过程_Sql - Fatal编程技术网

Sql 对作业名称进行参数验证的存储过程

Sql 对作业名称进行参数验证的存储过程,sql,Sql,我想在SQL中创建一个存储过程,它只执行在过程本身的参数验证中指定的作业。例如,我希望我的开发团队只能传递我指定的作业名称,这样他们才能运行他们只需要的作业。从他们的角度来看,它会像这样 Exec sp_run_only_jobs myjob 或 如果他们尝试运行上述两个作业以外的作业,则会失败并显示错误消息 I您可以创建一个存储过程来检查指定的作业名称是否属于特定的作业列表,然后执行该作业。否则,抛出错误消息 CREATE PROCEDURE dbo.usp_run_only_jobs @J

我想在SQL中创建一个存储过程,它只执行在过程本身的参数验证中指定的作业。例如,我希望我的开发团队只能传递我指定的作业名称,这样他们才能运行他们只需要的作业。从他们的角度来看,它会像这样

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