Tsql T-SQL中的电子邮件错误消息()
我有一个存储过程,它循环遍历记录集,并将文件附加到电子邮件,然后发送给用户 由于各种原因,该过程可能会失败。当它发生的时候Tsql T-SQL中的电子邮件错误消息(),tsql,error-handling,Tsql,Error Handling,我有一个存储过程,它循环遍历记录集,并将文件附加到电子邮件,然后发送给用户 由于各种原因,该过程可能会失败。当它发生的时候 IF @returncode > 0 我给自己生成了一封错误邮件 我想从网站上获取全文 error_message() 过程,并将其推入文本正文 我已经尝试将我的代码封装在一个Try块中,并将email发送代码放入catch块中 我还尝试从catch块中排除email发送代码,并简单地将error_消息结果分配给一个变量,我可以在邮件中引用该变量 两者都不起作用
IF @returncode > 0
我给自己生成了一封错误邮件
我想从网站上获取全文
error_message()
过程,并将其推入文本正文
我已经尝试将我的代码封装在一个Try块中,并将email发送代码放入catch块中
我还尝试从catch块中排除email发送代码,并简单地将error_消息结果分配给一个变量,我可以在邮件中引用该变量
两者都不起作用:要在电子邮件中发送错误消息,您需要将其强制转换为varchar。更新电子邮件地址和使用的邮件配置文件后,以下示例适用于您:
Declare @IsError int = 0
Declare @ErrorMessage VARCHAR(MAX) = ''
BEGIN TRY
-- Send email
EXEC msdb.dbo.sp_send_dbmail @recipients = 'Someone@abc.com'
, @from_Address = 'sqlemail.abc.com'
, @body = 'Email Body'
, @subject = 'Email Subject'
, @body_format = 'HTML'
, @profile_name = 'DBProfileName'
SET @IsError = @@ERROR
END TRY
BEGIN CATCH
-- Store exception information casting error message to varchar
SELECT @IsError = 1, @ErrorMessage = 'Exception message: ' + Cast (Error_Message() as varchar) + ';'
END CATCH
IF @IsError <> 0
BEGIN
DECLARE @Subject VARCHAR(250)
SELECT @Subject = 'Server Name: ' + @@SERVERNAME + '; Database Name: ' + DB_NAME() + ';' + ' - Email failed'
EXEC msdb.dbo.sp_send_dbmail @recipients = 'AlertSupport@abc.com'
, @from_Address = 'sqlemail.abc.com'
, @body = @ErrorMessage
, @subject = @Subject
, @profile_name = 'DBProfileName'
Raiserror('Error encountered while sending email', 16, 1);
END
您的过程是在失败时抛出异常,还是只返回非零返回代码?