sp_send_dbmail截断256个字符的行

时间:2018-05-04 10:33:14

标签: sql-server sql-server-2005 sp-send-dbmail

我想使用sp_send_dbmail通过电子邮件在HTML邮件正文中发送查询结果。

[HTML_body]的(仅)列(nvarchar(max)) ##HTML_BODY包含一行样式,一行用于表头,一行用于表的每一行。该表包含10行,每行的长度为500-650个字符。

我使用以下内容:

EXEC msdb.dbo.sp_send_dbmail 
            @profile_name = 'ProfileMail'
            ,@recipients = 'me@mycompanydomain.domain'
            ,@subject = 'MySubject'
            ,@body = 'These are the values'
            ,@body_format = 'HTML'
            ,@query_result_width = 2000
            ,@query = ' SET NOCOUNT ON SELECT [HTML_body] FROM ##HTML_BODY SET NOCOUNT OFF'
            ,@file_attachments='\\ThePath\Graph.jpg'
            ,@attach_query_result_as_file = 0
            ,@query_result_separator = '|'
            ,@exclude_query_output = 1
            ,@query_result_no_padding = 1
            ,@query_result_header = 0
            ,@append_query_error=1

代码可以工作,但每行在256个字符后被截断...任何人都可以知道可能出现什么问题? 我明确指出@query_result_width应该是2000!

我使用的是SQL Server 9.0.4035(2005),但没有找到与@query_result_width兼容的任何信息。

更新

我遇到与SQL Server 12.0.2000(2014)相同的问题

1 个答案:

答案 0 :(得分:0)

由于@query_no_truncate = 1

,您需要使用nvarchar(max)

我的大胆来自the docs

  

[@ query_no_truncate =] query_no_truncate
  指定是否使用避免截断大型可变长度数据类型的选项执行查询(varchar(max), nvarchar(max),varbinary(max),xml,text,ntext,image和用户定义的数据类型)。设置后,查询结果不包括列标题。 query_no_truncate值的类型为bit。当值为0或未指定时,查询中的列将截断为 256 个字符。值为1时,查询中的列不会被截断。此参数默认为0。