Usuário com melhor resposta
Envio de E-mail

Pergunta
-
Pessoal estou usando o recurso database mail para envio de um retorno por e-mail para alguns usuários, query consiste em listar o resultado de uma temporária como segue abaixo:
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Gerenciamento de Banco', @recipients = 'teste@gmail.com', @query = 'SET NOCOUNT ON; select LTRIM(RTRIM(NOME)) AS NOME, LTRIM(RTRIM(CPFCGC)) AS CPFCGC from [wsi-prot].dbo.pessoaslog' , @subject = 'Work Order Count', @attach_query_result_as_file = 1 , @query_attachment_filename = 'c:\spool\pessoaslog.csv', @query_result_header = 0, @query_result_width = 32767 , @query_result_separator = ';', /*@query_result_separator = ';',*/ @query_result_no_padding = 1
Bom até aqui ele envia o arquivo normalmente porem quando eu abro no excel o arquivo não é separado corretamente o que impede o pessoal de conferir o mesmo alguém saberia me dizer pq não abre correto? outro problema é que hj a tabela esta com aproximadamente 2536 registros e preciso enviar todos pois a cada execução ela é apagada e verifiquei que ela esta incompleta o número de linhas alguém poderia me ajudar?
- Editado eder.luca sexta-feira, 5 de setembro de 2014 18:03
sexta-feira, 5 de setembro de 2014 18:02
Respostas
-
Boa Tarde Eder,
Para separar corretamente o arquivo .csv, tenta trocar o trecho
@query_result_separator = ';', /*@query_result_separator = ';',*/
por
@query_result_separator=@tab,
Vou anexar a query que eu utilizo em uma das minhas rotinas por que pode te ajudar com relação a limitação de registros.
-- Start T-SQL USE msdb DECLARE @tab char(1) = CHAR(9) EXEC sp_send_dbmail @profile_name = 'profile_name', @recipients = 'email@email.com.br', @subject = 'Lista', @body = 'Segue em anexo a listagem diária.', @execute_query_database = 'msdb', @attach_query_result_as_file = 1, @query_attachment_filename='job_error.csv', @query_result_separator=@tab, @query_result_no_padding=1, @query = ' SELECT * FROM TABELA' -- End T-SQL --
Att, Bruno Silva.
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 12 de setembro de 2014 18:34
- Marcado como Resposta Durval RamosModerator terça-feira, 14 de outubro de 2014 10:58
sexta-feira, 5 de setembro de 2014 18:46
Todas as Respostas
-
Eder,
Jáverificou se esse arquivo excel antes de ser enviado esta correto ?
Pode ser que ele esteja com erros antes de ser enviado.
Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote
sexta-feira, 5 de setembro de 2014 18:14 -
Como eu faço essa verificação, pois o arquivo não fica no diretório que eu informei eu só recebo o mesmo.sexta-feira, 5 de setembro de 2014 18:33
-
Eder,
O arquivo esta no diretorio c:\spool\
No servidor em que esta instalado o SQL Server
Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote
sexta-feira, 5 de setembro de 2014 18:38 -
Boa Tarde Eder,
Para separar corretamente o arquivo .csv, tenta trocar o trecho
@query_result_separator = ';', /*@query_result_separator = ';',*/
por
@query_result_separator=@tab,
Vou anexar a query que eu utilizo em uma das minhas rotinas por que pode te ajudar com relação a limitação de registros.
-- Start T-SQL USE msdb DECLARE @tab char(1) = CHAR(9) EXEC sp_send_dbmail @profile_name = 'profile_name', @recipients = 'email@email.com.br', @subject = 'Lista', @body = 'Segue em anexo a listagem diária.', @execute_query_database = 'msdb', @attach_query_result_as_file = 1, @query_attachment_filename='job_error.csv', @query_result_separator=@tab, @query_result_no_padding=1, @query = ' SELECT * FROM TABELA' -- End T-SQL --
Att, Bruno Silva.
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 12 de setembro de 2014 18:34
- Marcado como Resposta Durval RamosModerator terça-feira, 14 de outubro de 2014 10:58
sexta-feira, 5 de setembro de 2014 18:46 -
Boa Tarde Eder,
Para separar corretamente o arquivo .csv, tenta trocar o trecho
@query_result_separator = ';', /*@query_result_separator = ';',*/
por
@query_result_separator=@tab,
Vou anexar a query que eu utilizo em uma das minhas rotinas por que pode te ajudar com relação a limitação de registros.
-- Start T-SQL USE msdb DECLARE @tab char(1) = CHAR(9) EXEC sp_send_dbmail @profile_name = 'profile_name', @recipients = 'email@email.com.br', @subject = 'Lista', @body = 'Segue em anexo a listagem diária.', @execute_query_database = 'msdb', @attach_query_result_as_file = 1, @query_attachment_filename='job_error.csv', @query_result_separator=@tab, @query_result_no_padding=1, @query = ' SELECT * FROM TABELA' -- End T-SQL --
Att, Bruno Silva.
Brunão,
Acredito que você matou a pau esta dúvida, se especificarmos no parâmetro @query_result_separator a variável @tab definida através da função Char(9), o SQL Server vai entender que a formação do arquvio dever ser em tabela e assim, ficará mais fácil e legível para o Excel abrir e posicionar os dados dentro da WorkSheet.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Editado Junior Galvão - MVPMVP sexta-feira, 12 de setembro de 2014 18:36
sexta-feira, 12 de setembro de 2014 18:35