Em outro artigo (Enviando Consultas por Email T-SQL )
Eu disponibilizei como enviar resultado da consulta por e-mail, ai teve gente reclamando que não abria no Excel logo...
DECLARE @tab char(1)= CHAR(9)
EXEC msdb.dbo.sp_send_dbmail
@profile_name ='<< PROFILE CONFIGURADO NO SERVIDOR >>',
@recipients ='<< O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo. >>',@query ='SET NOCOUNT ON
SELECT COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
WHERE DueDate > ''2001-01-01''
AND DATEDIFF(dd, ''2001-01-01'', DueDate) < 2',
@subject ='Arquivo no Excel',
@attach_query_result_as_file =1,
@query_attachment_filename='filename.csv',
@query_result_separator=@tab,
@query_result_no_padding=1
;
Uma outra dica é o envio com separador pipe ( | )
Neste caso é só setar a no nosso caso a variavel @tab
Observe que :
Declaro @query_result_header=0, isto inibe o cabecalho dos campos.
E sempre declaro o destino da consulta totalmente [banco].[dbo].[tabela] se não vai ficar procurando na net e achando que é falta de permissão
DECLARE
@tab char(1)= CHAR(9)
SET @tab='|'
EXEC msdb.dbo.sp_send_dbmail
@profile_name ='<<profile cadastrado no servidor >>',
@recipients='<<emeial@destino>>',
@query_result_header=0,
@query ='SELECT campo1, campo2 FROM [banco].[dbo].[tabela]
',
@subject ='tabela TXT',
@attach_query_result_as_file =1,
@query_attachment_filename='tabela.TXT',
@query_result_separator=@tab,
@query_result_no_padding=1
;
Maiores informações :
https://msdn.microsoft.com/pt-br/library/ms190307.aspx