SQL csv 在第 256 个字符处导出 cut-off

SQL csv exports cut-off at 256th character

我存储了通过电子邮件从 SQL table 作为 csv-file 发送数据的过程。 其他一切都在工作,除了 csv 将列的数据削减到 256 个字符,即使我有一个 '@query_result_width = 32767'。由于某种原因,这是行不通的。我试过 '@query_no_truncate = 1' 但排除了 headers,我还需要发送 headers。有什么建议吗?

 declare @qry nvarchar(max);
    
 Select @qry= 'USE Erve Update FORM Set Instructions = REPLACE(REPLACE(Instructions, CHAR(10), ""),CHAR(9), CHAR(32)) from FORM; select * from FORM'

EXEC msdb.dbo.sp_send_dbmail  
    @profile_name = 'NoReply',  
    @recipients ='some@receiver.com', 
    @query = @qry,
    @body = 'Liitteenä kaikki erillisveloitettavat rivit.',
    @subject = 'Erillisveloitettavat rivit',  
    @attach_query_result_as_file = 1 , 
    @query_attachment_filename = 'ErveKaikki-rivit.csv',
    @query_result_separator = ' ',
    @query_result_width = 32767,
    @query_result_no_padding = 1,
    @query_result_header = 1


END

聚会有点晚了,我希望你现在已经解决了你的问题哈哈

但是对于任何遇到这个问题的人来说,对我有用的是改变我的列的声明(我在 SELECT 查询中使用的那些来创建我的 csv 输出)从 nvarchar/varchar (max) 至 nvarchar/varchar(n),n 为固定值。

所以在 OP 的情况下,我假设被剪切的列在 FORM table

中声明为 nvarchar/varchar(max)
Select @qry= 'USE Erve Update FORM Set Instructions = REPLACE(REPLACE(Instructions, CHAR(10), ""),CHAR(9), CHAR(32)) from FORM; select * from FORM'

我使用与 OP 相同的代码发送电子邮件

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = @profile,
    @recipients = @email_to_address,
    @subject = @email_subject,
    @query = @Query,
    @attach_query_result_as_file = 1,
    @query_attachment_filename = 'filename.csv',
    @query_result_separator = @tab,
    @query_result_no_padding = 1,
    @query_result_width = 32767

这再次对我有用,因为我能够更改列定义,而且我确信这些列的数据不会超过 8000 个字符。