none
Configuração de Job Avançado RRS feed

  • Pergunta

  • Senhores,

    Tenho uma duvida tenho uma seguinte query, onde eu pego as minhas bases sincronizadas.

    SELECT 
    DB.NAME , MIRRORING_STATE_DESC
    FROM SYS.DATABASE_MIRRORING DM
    INNER JOIN SYS.SYSDATABASES DB ON DM.DATABASE_ID = DB.DBID
    WHERE MIRRORING_STATE_DESC = 'SYNCHRONIZED'

    Quero colocar isso num job para executar a cada 4 horas, até ai blz! Minha duvida é eu gostaria que a informação viesse no email formatado bonitinho... rs

    Exemplo:

    +------------------------------------------------------------+

       BASES SINCRONIZADAS

    +------------------------------------------------------------+

       DATA ATUAL

    +------------------------------------------------------------+

    E O resultado do select:

    TESTE SYNCHRONIZED
    TESTE 2  SYNCHRONIZED

    queria que viesse desta forma mesmo um por linha e com cabeçalho e data atual.

    terça-feira, 29 de setembro de 2015 21:20

Respostas

  • o Email que recebo vem como no print e eu quero uma formatação diferente


    Renata,

    Você já tentou aplicar a execução de outras consultas para definir esta estrutura como você gostaria?

    Segue abaixo um script T-SQL para você adaptar à sua necessidade:

    -- Apenas para demonstrar a "idéia" - use apenas no SSMS
    EXEC('SET NOCOUNT ON; SELECT ''BANCOS SINCRONIZADOS''; SELECT ''PESQUISA'' AS NAME, ''SYNCRONIZED'' AS MIRRORING')
    GO

    Segue abaixo um print-screen para facilitar essa idéia:

    Segue abaixo o script do "Send Email" adaptado à este modelo:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SQL Job',
        @recipients = 'monitor@seuemail.com.br',
        @query = 'SET NOCOUNT ON; 
          SELECT ''BANCOS SINCRONIZADOS'';
          SELECT 
    	DB.NAME , MIRRORING_STATE_DESC
    	FROM SYS.DATABASE_MIRRORING DM
    	INNER JOIN SYS.SYSDATABASES DB ON DM.DATABASE_ID = DB.DBID
    	WHERE MIRRORING_STATE_DESC = ''SYNCHRONIZED'';',
        @subject = '[MONITOR] Bancos Sincronizados',
        @attach_query_result_as_file = 1;


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Renata Cardoso quarta-feira, 1 de junho de 2016 16:11
    quarta-feira, 30 de setembro de 2015 13:47
    Moderador

Todas as Respostas

  • Renata, bom dia

    Use o CASE.

    Ex. SELECT CASE  MIRRORING_STATE_DESC WHEN 'SYNCRONIZED' THEN 'SINCRONIZADA' ELSE 'NAO SINCRONIZADA' FROM TABELAS



    Eduardo Gomes
    MTA - MCSA SQL Server 2012 - MCSE Business Intelligence
    http://edugp.wordpress.com/
    Twitter: @edugp_sp

    quarta-feira, 30 de setembro de 2015 11:58
  • Renata,

    Você pode definir no Job a execução da procedure de sistema "sp_send_dbmail" no último passo (caso concluído com sucesso).

    Segue abaixo um script T-SQL para você adaptar à sua necessidade:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SQL Job',
        @recipients = 'monitor@seuemail.com.br',
        @query = 'SELECT 
    	DB.NAME , MIRRORING_STATE_DESC
    	FROM SYS.DATABASE_MIRRORING DM
    	INNER JOIN SYS.SYSDATABASES DB ON DM.DATABASE_ID = DB.DBID
    	WHERE MIRRORING_STATE_DESC = ''SYNCHRONIZED''',
        @subject = '[MONITOR] Bancos Sincronizados',
        @attach_query_result_as_file = 1;

    Para maiores informações veja:

    https://msdn.microsoft.com/pt-br/library/ms190307.aspx


    Se ajudou na sua solução, não esqueça de marcar como resposta !


    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    quarta-feira, 30 de setembro de 2015 13:12
    Moderador
  • Pessoal,

    isso que voces citaram, eu ja fiz e deu certo! eu quero uma forma de formatar o email que eu recebo

    quarta-feira, 30 de setembro de 2015 13:18
  • o Email que recebo vem como no print e eu quero uma formatação diferente


    quarta-feira, 30 de setembro de 2015 13:20
  • o Email que recebo vem como no print e eu quero uma formatação diferente


    Quero ele desta forma:

    Exemplo:

    +------------------------------------------------------------+

       BASES SINCRONIZADAS

    +------------------------------------------------------------+

       DATA ATUAL

    +------------------------------------------------------------+

    E O resultado do select:

    TESTE SYNCHRONIZED
    TESTE 2  SYNCHRONIZED

    quarta-feira, 30 de setembro de 2015 13:20
  • o Email que recebo vem como no print e eu quero uma formatação diferente


    Renata,

    Você já tentou aplicar a execução de outras consultas para definir esta estrutura como você gostaria?

    Segue abaixo um script T-SQL para você adaptar à sua necessidade:

    -- Apenas para demonstrar a "idéia" - use apenas no SSMS
    EXEC('SET NOCOUNT ON; SELECT ''BANCOS SINCRONIZADOS''; SELECT ''PESQUISA'' AS NAME, ''SYNCRONIZED'' AS MIRRORING')
    GO

    Segue abaixo um print-screen para facilitar essa idéia:

    Segue abaixo o script do "Send Email" adaptado à este modelo:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SQL Job',
        @recipients = 'monitor@seuemail.com.br',
        @query = 'SET NOCOUNT ON; 
          SELECT ''BANCOS SINCRONIZADOS'';
          SELECT 
    	DB.NAME , MIRRORING_STATE_DESC
    	FROM SYS.DATABASE_MIRRORING DM
    	INNER JOIN SYS.SYSDATABASES DB ON DM.DATABASE_ID = DB.DBID
    	WHERE MIRRORING_STATE_DESC = ''SYNCHRONIZED'';',
        @subject = '[MONITOR] Bancos Sincronizados',
        @attach_query_result_as_file = 1;


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Renata Cardoso quarta-feira, 1 de junho de 2016 16:11
    quarta-feira, 30 de setembro de 2015 13:47
    Moderador
  • Renata,

    Acredito que a respota do Durval por mais simples que ela possa ser é muito funcional e bastante prática, entendo que poderá te ajudar.

    Agora você diz que deseja o retorno do e-mail formatado, talvez uma possibilidade seria você formatar o retorno do seu e-mail via sp_send_dbmail em HTML Format, veja se este exemplo ajuda:

    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SQL Job',
        @recipients = 'monitor@seuemail.com.br',
        @query = 'SET NOCOUNT ON; 
          SELECT ''BANCOS SINCRONIZADOS'';
          SELECT 
    	DB.NAME , MIRRORING_STATE_DESC
    	FROM SYS.DATABASE_MIRRORING DM
    	INNER JOIN SYS.SYSDATABASES DB ON DM.DATABASE_ID = DB.DBID
    	WHERE MIRRORING_STATE_DESC = ''SYNCHRONIZED'';',
        @subject = '[MONITOR] Bancos Sincronizados',
        @body = 'This is an HTML test email send using <b>sp_send_dbmail</b>',
        @body_format = 'HTML',
        @attach_query_result_as_file = 1;


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de setembro de 2015 14:21
  • Olá...

    Direto do BOL.

    CREATE TABLE #TMP
    (
    	NOME VARCHAR(15),
    	STATUS VARCHAR(12)
    )
    
    INSERT #TMP ( NOME, STATUS ) VALUES  ('BD1','SYNCHRONIZED')
    INSERT #TMP ( NOME, STATUS ) VALUES  ('BD2','SYNCHRONIZED')
    INSERT #TMP ( NOME, STATUS ) VALUES  ('BD3','SYNCHRONIZED')
    INSERT #TMP ( NOME, STATUS ) VALUES  ('BD4','SYNCHRONIZED')
    INSERT #TMP ( NOME, STATUS ) VALUES  ('BD5','SYNCHRONIZED')
    INSERT #TMP ( NOME, STATUS ) VALUES  ('BD6','SYNCHRONIZED')
    
    DECLARE @tableHTML NVARCHAR(max);
    
    SET @tableHTML =
    N'<h4>BASES SINCRONIZADAS</h4>'+
    N'+------------------------------------+</br>'+
    N'Data: '+CONVERT(VARCHAR(12),getdate(),103)+N'</br>'+
    N'+------------------------------------+</br></br>'+
    N'<table border=1>'+
    N'	<tr><th>Base</th><th>Status</th></tr>'+
    	CAST ( ( SELECT td = t.NOME,       '',
                        td = t.status, ''                    
                  FROM #tmp AS t              
                  FOR XML PATH('tr'), TYPE 
        ) AS NVARCHAR(MAX) )+ 
    N'</table>';
    
    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DBA',
        @recipients = 'e-mail monitor',
        @subject = '[MONITOR] Bancos Sincronizados',
        @body = @tableHTML,
        @body_format = 'HTML'

    Fonte: BOL

    Resultado !


    Flávio Farias
    "May the Force be with you"
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"


    quinta-feira, 1 de outubro de 2015 20:38