AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 199827
Accepted
S3S
S3S
Asked: 2018-03-10 08:51:17 +0800 CST2018-03-10 08:51:17 +0800 CST 2018-03-10 08:51:17 +0800 CST

Consultar configurações de sessão de correio do sistema de alerta do SQL Server

  • 772

Estou procurando uma maneira de consultar as configurações da sessão de correio em Agente > Sistema de alertas > Sessão de correio. Semelhante à forma como sp_MSgetalertinfo retorna informações sobre o operador Fail-safe, gostaria de determinar se o perfil de email Habilitar está marcado e como o sistema de email e o perfil de email estão definidos. Eu entendo que eles podem estar contidos apenas nas configurações do registro.

A razão pela qual eu quero consultá-los é porque nós os habilitamos ... O Database Mail não está habilitado para notificações do agente. Não é possível enviar email para" erro no log do agente. Este é um banco de dados de terceira parte ao qual o suporte tem acesso total. Não tenho certeza se eles acidentalmente (ou propositalmente) o desabilitaram, ou se ele pode ser desabilitado por algum outro sistema que não seja feito por um usuário.

Para não tornar isso uma pergunta XY, estou aberto a sugestões sobre como auditar essas alterações com uma especificação de auditoria de servidor.

sql-server sql-server-2012
  • 1 1 respostas
  • 662 Views

1 respostas

  • Voted
  1. Best Answer
    Hannah Vernon
    2018-03-10T09:52:26+08:002018-03-10T09:52:26+08:00

    Eu uso este código para validar a configuração do perfil do Database Mail:

    /* 
        Confirm the Database Mail account and profile is configured correctly 
    */ 
    DECLARE @ProfileName        varchar(255);  
    DECLARE @AccountName        varchar(255);  
    DECLARE @AccountFromAddress varchar(255);  
    DECLARE @AccountReplyTo     varchar(255);  
    DECLARE @SMTPServer         varchar(255);  
    DECLARE @SMTPPort           varchar(255);  
    DECLARE @DatabaseMail       varchar(255);  
                  
    SELECT   
          @ProfileName          = smp.name  
        , @AccountName          = sma.name  
        , @AccountFromAddress   = sma.email_address  
        , @AccountReplyTo       = sma.replyto_address  
        , @SMTPServer           = sms.servername  
        , @SMTPPort             = sms.port  
    FROM msdb.dbo.sysmail_account sma  
        INNER JOIN msdb.dbo.sysmail_profileaccount smpa 
            ON sma.account_id = smpa.account_id  
        INNER JOIN msdb.dbo.sysmail_profile smp 
            ON smpa.profile_id = smp.profile_id  
        INNER JOIN msdb.dbo.sysmail_server sms 
            ON sma.account_id = sms.account_id;
                  
    /*  
        Confirm SQL Server Agent is configured to use Database Mail correctly  
    */  
    DECLARE @res TABLE  
    (  
          [Value] varchar(255)  
        , [Data] varchar(255)  
    );  
    INSERT INTO @res  
    EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail';  
    INSERT INTO @res  
    EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'DatabaseMailProfile';  
    IF (  
            SELECT COUNT_BIG(*)  
            FROM @res r  
            WHERE r.[Value] = 'UseDatabaseMail' AND r.[Data] = 1  
        ) = 1 AND   
        (  
            SELECT COUNT_BIG(*)  
            FROM @res r  
            WHERE r.[Value] = 'DatabaseMailProfile' AND r.[Data] IS NOT NULL  
        ) = 1  
        SET @DatabaseMail = 'Configured'  
    ELSE  
        SET @DatabaseMail = 'Not Configured';  
                  
    /*  
        Combine results into a single row  
    */  
    SELECT 
          ServerName            = @@SERVERNAME  
        , ProfileName           = @ProfileName  
        , AccountName           = @AccountName  
        , AccountFromAddress    = @AccountFromAddress  
        , AccountReplyTo        = @AccountReplyTo  
        , SMTPServer            = @SMTPServer  
        , SMTPPort              = @SMTPPort  
        , AgentDatabaseMail     = @DatabaseMail; 
    

    A saída se parece com:

    ╔══════════════╦═════════════╦═════════════╦══════ ═════════════════╦════════════════════════╦═══════ ═════════════════╦══════════╦═════════════╗
    ║ ServerName ║ ProfileName ║ AccountName ║ AccountFromAddress ║ AccountReplyTo ║ SMTPServer ║ SMTPPort ║ AgentDatabaseMail ║
    ╠══════════════╬═════════════╬═════════════╬══════ ═════════════════╬════════════════════════╬═══════ *
    ║ servername ║ DBA ║ SMTP ║ [email protected] ║ [email protected] ║ mailserver.company.com ║ 25 ║ Configured ║
    ╚══════════════╩═════════════╩═════════════╩══════ ═════════════════╩════════════════════════╩═══════ ═════════════════╩══════════╩════════════════════════════════════════

    Vários parâmetros usados ​​pelo SQL Server Agent são armazenados no registro. Eu uso este código para obter esses detalhes:

    DECLARE @res TABLE  
    (  
          [Value] varchar(255)  
        , [Data] varchar(255)  
    );  
    
    INSERT INTO @res  
    EXEC master.dbo.xp_instance_regread
             @rootkey      = N'HKEY_LOCAL_MACHINE'
           , @key          = N'Software\Microsoft\MSSQLServer\SQLServerAgent'
           , @value_name   = N'DatabaseMailProfile';
    
    INSERT INTO @res  
    EXEC sys.xp_instance_regread
             @rootkey      = N'HKEY_LOCAL_MACHINE'
           , @key          = N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent'
           , @value_name   = N'UseDatabaseMail'
    
    SELECT r.[Value]
        , r.[Data]
    FROM @res r;
    

    A saída:

    ╔═════════════════════╦══════════════════════════╗══════════
    ║ Valor ║ Dados ║
    ╠═════════════════════╬═════════════════════════════════════
    ║ DatabaseMailProfile ║ MV2012MailProfile ║
    ║ UseDatabaseMail ║ 1 ║
    ╚═════════════════════╩═════════════════════════════════════
    • 1

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve