Я почти уверен, что проблема заключается в типах данных CHAR в таблице, поскольку проблема не возникает с VARCHAR.
use tempdb
go
create table dbo.t1 (col1 char(10), col2 char(20));
go
insert into dbo.t1 values ('1', '1')
, ('2', '2')
, ('3', '3');
go
select quotename(col1), quotename(col2) from dbo.t1;
go
Результаты:
[1 ], [1 ]
[2 ], [2 ]
[3 ], [3 ]
Теперь выполните следующее, но RTRIM столбцы:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'test'
, @recipients = 'x@x.com'
, @reply_to = 'x@x.com'
, @subject = 'test2'
, @body_format = 'HTML'
, @query = 'set nocount on; select rtrim(col1) as col1, rtrim(col2) as col2 from dbo.t1'
, @execute_query_database = 'tempdb'
, @attach_query_result_as_file = 1
, @query_attachment_filename='x.txt'
, @query_result_header=1
, @query_result_separator=',';
по электронной почте результаты вложенного файла:
col1,col2
----,----
1,1
2,2
3,3