gpt4 book ai didi

sql - 如何将 SQL Server 作业名称传递给此作业中的存储过程?

转载 作者:行者123 更新时间:2023-12-02 05:28:36 25 4
gpt4 key购买 nike

我有一份工作:

运行程序

它有步骤:

第一步:做点什么
第 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

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

我阅读了有关代币的内容,但对如何完成这项任务感到有些困惑。

谁能帮帮我?

最佳答案

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

$(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

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

关于sql - 如何将 SQL Server 作业名称传递给此作业中的存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com