【问题标题】:How do I pass the SQL Server Job name to a stored procedure inside this job?如何将 SQL Server 作业名称传递给此作业中的存储过程?
【发布时间】:2012-10-03 17:00:29
【问题描述】:

我有工作:

运行程序

它有步骤:

第 1 步:做某事
第 2 步:做其他事情
第 3 步:电子邮件

在第 3 步中,我有:

EXEC spSendSuccessEmail -- and here's where I want to pass the job name.

这是上面存储过程的代码:

ALTER PROCEDURE [dbo].[spSendSuccessEmail] @JobName VARCHAR(30)
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @EmailBody VARCHAR(50)

    SET @EmailBody = @JobName + ' ran successfully'

    BEGIN TRY
        EXEC msdb.dbo.sp_send_dbmail 
            @profile_name = 'DBTeam',
            @recipients = 'user@universe.com',
            @copy_recipients = 'user2@universe.com',
            @subject = 'Process Complete',
            @body = @EmailBody,
            @importance = 'Normal',
            @sensitivity = 'Normal';
    END TRY
    BEGIN CATCH
        EXEC spGetDatabaseErrorInfo
    END CATCH           
END

如何将其所在作业的名称传递给该存储过程?

我阅读了令牌,但我对如何完成这项任务有点困惑。

谁能帮帮我?

【问题讨论】:

  • 执行 spSendSuccessEamil @Jobname。假定变量已声明,从前面设置,并且是字符串类型。我错过了什么吗?

标签: sql sql-server tsql token sql-job


【解决方案1】:

更新 我做了一些测试,对于某些版本的 SQL Server(2005 sp1 及更高版本),您必须转义令牌。我在下面的代码中添加了转义命令。

$(JOBID) 是您要使用的token,您可以从msdb..sysjobs 中查询找到作业名称。

对于 sql server 2005 sp1 及更高版本:

declare @jobName varchar(100)

select @jobName = name from msdb..sysjobs where job_id = $(ESCAPE_NONE(JOBID))

exec spSendSuccessEamil @jobName

对于 sql server 2005 及更早版本:

declare @jobName varchar(100)

select @jobName = name from msdb..sysjobs where job_id = $(JOBID)

exec spSendSuccessEamil @jobName

只需在工作的第三步中使用其中一个作为命令文本。

【讨论】:

  • 这实际上不起作用:( ...首先,我认为您的意思是在“name”列之前放置“SELECT”。由于某种原因,$(ESCAPE_NONE(JOBID)) 被下划线时我尝试将其分配给 @JobName。它一直说名称不正确。
  • 嗯,我将前 2 行 sql 直接粘贴到我的工作中,它们运行良好。你用的是什么版本的sql server?如果它早于 2005 Service Pack 1,请尝试删除 ESCAPE_NONE,使其只是“job_id = $(JOBID)”。 ESCAPE_NONE 可能在早期版本的 sql server 中不存在。
  • 我正在使用 SQL Server 2012,这很有效,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多