我使用sp_send_dbmail中的@query外围发送带有警告列表的电子邮件(警告由@query周围返回)。@Query外围被列为电子邮件中的文本。从@Query周边返回并在电子邮件中显示的所有记录都在它们之间有一个线路。IE。如果我有4个记录,我会因为线路断路而有8行。
我该如何扭转台面?我阅读了SP_SEND_DBMAIL的MSDN文章,但没有提及任何可能会更改会影响线路断裂的属性。
代码:
BEGIN
EXEC MSDB.DBO.sp_send_dbmail
@PROFILE_NAME = 'Alerts',
@RECIPIENTS = @MAIL,
@SUBJECT = @NEWSUBJECT,
@BODY = @NEWBODY,
@QUERY =
'SET NOCOUNT ON
DECLARE @HEXSTRING AS VARCHAR(100)
SET @HEXSTRING = (SELECT HEXADECIMAL_STRING FROM mydb.dbo.statusupdates
WHERE MACHINE_ID = ''1111'' AND DATEDIFF(MI, TIME_DATE_RECEIVED, GETDATE()) <= 60)
SELECT [Warning_Description] FROM mydb.DBO.BINARYTOTABLE(mydb.DBO.HEXTOBINARY(@HEXSTRING)) AS ABB1
JOIN mydb.DBO.WarningMessages ON mydb.DBO.WarningMessages.[Bit_Offset] = ABB1.BITPLACE
WHERE BITVALUE = 1 AND ALERT_LEVEL = ''WARNING''',
@QUERY_RESULT_HEADER = 0,
@ATTACH_QUERY_RESULT_AS_FILE = 0;
END
旧帖子,但可能值得检查@query_result_width参数sp_send_dbmail
请参阅http://technet.microsoft.com/en-us/library/ms190307(v = sql.110).aspx
如果列中的数据宽度超过@query_result_width(默认为256)将添加一条新行。
Steve
我始终使用char(13) char(10)在TSQL中创建线断裂。您将必须替换为'。
我最终将所有内容都放入sp_send_dbmail的 @body参数中。从选择语句中的查询结果可以与常规文本连接到字符串中,您可以使用HTML格式化结果文本。
尝试一下,看看您得到的...
@query = REPLACE(@query,CHR(13),'')