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