我有一个存储过程,它获取作业名称作为输入并发送带有作业历史信息的邮件。当其他作业失败时,如何自动运行此作业?
有没有办法将作业的名称(或 ID)传递给这个存储过程?
谢谢
我有一个存储过程,它获取作业名称作为输入并发送带有作业历史信息的邮件。当其他作业失败时,如何自动运行此作业?
有没有办法将作业的名称(或 ID)传递给这个存储过程?
谢谢
您可以使用 SQL 代理令牌来获取当前正在执行的作业的名称或 ID ( http://technet.microsoft.com/en-us/library/ms175575(v=sql.105).aspx )。
要进行此设置,请执行以下操作:
JOBID
信息以及您需要的任何其他信息。下面是“电子邮件作业历史记录”T-SQL 步骤的示例,其中msdb.dbo.usp_SQLAgentSendJobStepFailedEmail
是您的过程名称:“电子邮件作业历史记录”T-SQL 步骤示例:
DECLARE @jobid uniqueidentifier, @run_date int, @run_time int, @profile_name sysname;
set @profile_name = 'MyDatabaseMailProfileName';
--USE SQL AGENT "TOKENS" TO GET CURRENT JOB PARAM VALUES
set @jobid = $(ESCAPE_NONE(JOBID));
set @run_date = $(ESCAPE_NONE(STRTDT));
set @run_time = $(ESCAPE_NONE(STRTTM));
EXEC msdb.dbo.usp_SQLAgentSendJobStepFailedEmail @jobid = @jobid, @run_date = @run_date, @run_time = @run_time, @email_profile_name = @profile_name;