首页 > 解决方案 > Microsoft SQL Server - SQL Server 代理使用预定的电子邮件 - msdb.dbo.sp_send_dbmail - 存储过程截断电子邮件正文

问题描述

我在 SQL Server 代理中有以下 T-SQL 脚本,它计划在每天早上 7 点和晚上 7 点运行。

DECLARE @Report_output nvarchar(4000);
DECLARE @HourLapse_output real;
DECLARE @ServerName_output nvarchar(50);
DECLARE @Subject_output nvarchar(4000);

EXEC dbo.usp_ABC
@Report = @Report_output OUTPUT,
@HourLapse = @HourLapse_output OUTPUT,
@ServerName = @ServerName_output OUTPUT;

SET @Subject_output = CONCAT('ABC Notification: ........Log table in the ', @ServerName_output, ' 
server loaded with .....');

EXEC msdb.dbo.sp_send_dbmail  
@profile_name = 'noreply@abc.net',  
@recipients = 'abc@abc.net',
@body_format = 'HTML',
@body = @Report_output,  
@subject = @Subject_output; `

我使用输出参数运行一个名为 dbo.usp_ABC 的 SQL Server 存储过程;我使用变量捕获这些输出参数,并将变量输入 msdb.dbo.sp_send_dbmail 系统存储过程。

存储过程 dbo.usp_ABC 完美执行。系统存储过程 - msdb.dbo.sp_send_dbmail - 还正确地在其正文中捕获@Report_output 变量。

当我在 SQL Server 代理之外运行存储过程 msdb.dbo.sp_send_dbmail时,我在电子邮件中得到了整个正文,没有任何截断。

但是,问题似乎与 SQL Server 代理有关,它如何获取电子邮件的正文。当我通过 SQL Server 代理收到电子邮件时,正文被截断为大约 262 多个字符。正文中的最后 15 多个字符被截断。

我需要电子邮件中的整个正文。有什么建议吗?

即使我将 @body_format 更改为 TEXT 而不是 HTML,问题仍然存在。

(电子邮件的主题总是很好)

标签: tsqlstored-proceduressql-server-agentsql-agent-jobsp-send-dbmail

解决方案


推荐阅读