use*_*102 2 sql sql-server-2008
我有一个查询让我返回一个结果集,但是当我sp_send_dbmail
用来向某人发送包含此结果集作为CSV 文件的电子邮件时,它以错误的格式在 excel 中打开!我知道我可以通过 excel 更正这种格式,但我不希望用户这样做!我希望他们能够打开文件,并且所有内容都以正确的格式显示。下面显示了我如何创建CSV 文件并将其通过电子邮件发送给某人(我也指定了分隔符,但它不起作用,我不知道为什么):
EXEC msdb.dbo.sp_send_dbmail
@profile_name='TestProfile',
@recipients='Test@gmail.com',
@subject='Test message',
@body='This is a test.',
@query = 'Select firstName, LastName, Address, Score from TestData.dbo.Student',
@query_result_header = 0,
@exclude_query_output = 1,
@append_query_error = 1,
@attach_query_result_as_file = 1,
@query_result_separator = ',',
@query_result_width = 25,
@query_attachment_filename = 'Test.csv',
@query_result_no_padding = 1
Run Code Online (Sandbox Code Playgroud)
一旦CSV文件被接收并打开所有的数据在第一列表示,这是不想要的结果!
我的列表分隔符设置的屏幕截图
小智 5
我在这个问题上挣扎了几天,但终于让它起作用了
@query_result_separator =' ',成功了,它是 TAB 作为结果分隔符。
完整代码 EXEC msdb.dbo.sp_send_dbmail
@profile_name ='MailProfile',
@from_address = 'def@abc.com',
@recipients = 'Abc@abc.com',
@body = @varBody,
@body_format = 'HTML',
@execute_query_database ='MyDB',
@query = @VarSQL,
@attach_query_result_as_file = 1,
@query_result_separator =' ',
@exclude_query_output =1,
@query_result_no_padding=1,
@query_result_header =1,
@query_attachment_filename ='MyDB.csv'
Run Code Online (Sandbox Code Playgroud)