Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta SQL e envio por email


Guest --Luciano --

Pergunta

Guest --Luciano --

Pessoal,

Preciso de alguma forma executar uma consulta SQL de tempos em tempos (se possível a cada novo input) e enviar o resultado por email. É possível? Alguém tem idéia de como posso fazer isso?

Até consigo fazer a seguinte consulta, mas não sei como salvar e enviar por email.

SELECT [event_id],[timestamp], [originator], [ip_addr], [remark] FROM audit_trail

WHERE event_id IN ( 901,903,910,911,912,913,915,916,917,918,1001,1003,1014,1019,1101,1102,1103)

AND [timestamp] < '"&sdate&"'

ORDER BY [timestamp] DESC"

Se alguém puder me ajudar, fico grato.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Fiz algo parecido que funcionava assim:

Na minha tabela tb_ocorrencias criei um trigger que toda vez a que incluisse um registro gerava um registro em um tabela tb_emails.

Dai cirei um aplicação vb que fica rodando como serviço no server e cada novo registro na tabel a e-mail envia amensagem para o destinatario e marca um flag no registro como enviado.

Sei que é possivel enviar e-mails diretamente do SQL server mas acho que no seu caso só mesmo aplicação extern.

Link para o comentário
Compartilhar em outros sites

  • 0

O código abaixo mostra como enviar um e-mail utilizando um PROFILE (muito fácil de criar um) pré-existente no DBMail.

declare 
@subj  nvarchar(300),
@email nvarchar(256),
@tableHTML  NVARCHAR(MAX)

SET @tableHTML =
    N'<H1>Cabeçalho1</H1>' +
    N'<table border="1">' +
    N'<tr><th>Cabecalho Coluna1</th><th>Cabecalho Coluna 2</th>' +
    N'<th>Cabecalho coluna n</th>' +
    CAST ( ( 
        SELECT     td = Coluna1, '',
            td = Coluna2, '',
            td = ColunaN
            FROM <TABELAX>
            FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
    N'</table>';

    set @email = 'email_destinatario@email.com'

    set @subj = 'Assunto do email - ' + @@servername + ' - ' + cast(GETDATE() as nvarchar)

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name    = '<Nome do Profile a ser utilizado>', -- nome do profile de envio de e-mail no DBMail
        @recipients    = @email,
        @body        = @tableHTML,
        @subject    = @subj,
        @body_format    = 'HTML'

Atenção:

- Para fazer com que seja executado de tempos em tempos, basta que você crie uma procedure com o código acima e chame-a através de um schedule de job com a frequência desejada.

Espero que ajude.

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...