none
DatabaseMail não envia emails. RRS feed

  • Pergunta

  • Boa tarde pessoal;

    Eu configurei o database mail para envio de notificações, contudo, os emails não estão sendo enviado.

    Eu testei o telnet para o smtp  está ok.

    Usei outra ferramenta de enviao de email a partir deste servidor e o email foi enviado e recebido corretamente.

    Fiz um select na sysmail_mailitens, e o status fica sempre em zero (aguardando envio) e depois de um tempo muda para 2 2(falha). O pior é que eu ja tinha testado antes e tinha funcionado.

    Eu tentei apagar o profile e a conta, e recriar, mas o problema persiste.

    Validei também se o broker está ativo no msdb e ele está.

    Alguém tem alguma idéia do que pode estar ocorrendo?

    Abs.

    Mura


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    quarta-feira, 22 de janeiro de 2020 17:42

Respostas

  • De ontem pra hoje mesmo sem fazer um stop/start do serviço do SQL o DatabaseMail parou novamente.

    Eu rodei um script aqui

    HILE EXISTS(SELECT
         'ExternalMailQueue' AS ServiceBrokerQueueName,
         *
         FROM
         [dbo].[ExternalMailQueue])
      BEGIN
      WAITFOR ( receive TOP(1) conversation_group_id FROM [ExternalMailQueue] ), timeout 1000;
      END 
    
    [dbo].[sp_sysmail_activate]

    Agora voltou a funcional.

    Realmente pode ser algo relacionado ao Broker.

    Vou acompanhar mas ao que me parece vai parar novamente.


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    Ricardo,

    Verifique no Event Viewer do Windows os eventos que estão sendo relacionados ao Broker.

    Além disso, acesse este link: 

    Service Broker Target for Extended Events

    Nele você vai encontrar como criar uma sessão de monitoramento para os eventos do Service Broker através dos Extended Events no SQL Server.

    Em adicional, encontrei este script extraído:https://dba.stackexchange.com/questions/196571/is-there-a-service-broker-target-for-an-extended-event-session

    CREATE QUEUE InitiatorQueue;
    CREATE QUEUE TargetQueue;
    CREATE MESSAGE TYPE ExtendedEventMessageType VALIDATION = NONE;
    CREATE CONTRACT ExtendedEventMessageContract (
          ExtendedEventMessageType SENT BY ANY
        );
    CREATE SERVICE InitiatorService
        ON QUEUE dbo.InitiatorQueue (ExtendedEventMessageContract);
    CREATE SERVICE TargetService
        ON QUEUE dbo.TargetQueue (ExtendedEventMessageContract);
    GO
    
    CREATE EVENT SESSION service_broker_target_test ON SERVER 
    ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1))
    ADD TARGET sqlserver.service_broker(SET database_id=(14)
        ,initiator_service=N'InitiatorService'
        ,message_type=N'ExtendedEventMessageType'
        ,service_contract=N'ExtendedEventMessageContract'
        ,target_service=N'TargetService')
    WITH (
        MAX_MEMORY=4096 KB
        ,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
        ,MAX_DISPATCH_LATENCY=30 SECONDS
        ,MAX_EVENT_SIZE=0 KB
        ,MEMORY_PARTITION_MODE=NONE
        ,TRACK_CAUSALITY=OFF,
        STARTUP_STATE=OFF);
    GO
    
    ALTER EVENT SESSION service_broker_target_test ON SERVER 
        STATE = START;
    GO
    
    SELECT * FROM sys.conversation_endpoints;
    SELECT * FROM dbo.InitiatorQueue;
    SELECT * FROM dbo.TargetQueue;
    SELECT * FROM sys.dm_xe_session_targets
    WHERE target_name = 'service_broker';
    GO
    Ele poderá lhe ajudar a criar uma session no seu SQL Server para monitorar em tempo real o Service Broker do seu ambiente.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]




    sexta-feira, 24 de janeiro de 2020 14:10
    Moderador

Todas as Respostas

  • Olá amigo , 

    Podem ser muitas coisas . Neste caso , seria legal você nos enviar a principio prints da sua configuração de DataBaseMail , pois já vi erros assim ser muitas coisas, como detalhes de senhas e um email escrito errado a configurações mais avançadas. 

    User que executa o job e até quem está configurado no Agent com permissão . Firewall e etc...

    Acho que devemos ir por partes para chegar ao resultado. 

    Este post pode ficar um pouco grande. rsrs


    Se esta resposta lhe ajudou, marque-a como útil para que outra pessoa com dúvida ou problema semelhante possa encontrar resposta ou ajuda mais facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    quarta-feira, 22 de janeiro de 2020 18:56
  • Ricardo,

    A quanto tempo você não aparece por aqui! Tudo bem?

    Em relação ao Database Mail, algumas coisas para saber:

    1 - Qual é a versão do SQL Server?

    2 - Você esta enviando para qual domínio?

    3 - Como estão as configurações do SQL Server Agent?

    4 - Existem algum anexo que esta sendo enviado em conjunto?

    ----------------------------------------

    Tente consultar a System View sysmail_faileditemspara verificar o que é listado nesta visão em relação as possíveis falhas.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quarta-feira, 22 de janeiro de 2020 19:31
    Moderador
  • Fala Jr. blz ?

    Vamos lá...

    1-SQL 2016 SP2 Cumulative 11.

    2-Para qualquer endereço ocorre a falha. (ate meu pessoal).

    3-BIINGO!!! Esqueci de configurar o AlertSystem hehehe.

    Obrigado mais uma vez.


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    quinta-feira, 23 de janeiro de 2020 12:10
  • Ricardo,

    Tudo bem!!! Obrigado pelas respostas.

    Que bom que você conseguiu resolver.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 23 de janeiro de 2020 13:01
    Moderador
  • Ricardo,

    Tudo bem!!! Obrigado pelas respostas.

    Que bom que você conseguiu resolver.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Fala Jr.

    Cara, eu dei um boot na maquina e o problema voltou.

    Então eu executei a proc pra ativar e o email foi enviado.

    [dbo].[sp_sysmail_activate]

    Bootei a maquina de novo, mandei um email e ficou lá como unsent, aí eu rodei a proc denovo e e o email foi enviado.

    Teoricamente eu teria que ficar rodando a proc pra ativar toda vez que bootar ou der um stop no serviço do SQL.

    Já passou por isso alguma vez?

    Abs.

    Mura


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>


    quinta-feira, 23 de janeiro de 2020 18:16
  • Ricardo,

    Não é para ter esta necessidade.

    Seria mais indicado tentar identificar quem pode estar derrubando a sua filha de e-mails!!!

    Estou suspeitando que o SQL Broker pode estar impactando no acessos externos, criando gargalos ou bloqueios em suas filhas.

    Veja se estes links te ajudam:

    https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sysmail-start-sp-transact-sql?view=sql-server-ver15

    Faça um teste, se possível reinicialize o SQL Server, execute o system stored procedure dbo.sysmail_start_sp ou invés da sp_sysmail_activate, verifique se os e-mails estão sendo enviados.

    A sp_sysmail_active é uma das 5 Stored Procedures relacionadas ao Database Mail que não são documentadas oficialmente desde a versão 2014:

    • sp_RunMailQuery
    • sp_SendMailMessage
    • sp_sysmail_activate
    • sysmail_verify_account_sp
    • sysmail_verify_profile_sp

    https://www.sswug.org/alexanderchigrik/sql-server/five-undocumented-sql-server-2014-database-mail-procedures/


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]



    quinta-feira, 23 de janeiro de 2020 19:46
    Moderador
  • De ontem pra hoje mesmo sem fazer um stop/start do serviço do SQL o DatabaseMail parou novamente.

    Eu rodei um script aqui

    HILE EXISTS(SELECT
         'ExternalMailQueue' AS ServiceBrokerQueueName,
         *
         FROM
         [dbo].[ExternalMailQueue])
      BEGIN
      WAITFOR ( receive TOP(1) conversation_group_id FROM [ExternalMailQueue] ), timeout 1000;
      END 
    
    [dbo].[sp_sysmail_activate]

    Agora voltou a funcional.

    Realmente pode ser algo relacionado ao Broker.

    Vou acompanhar mas ao que me parece vai parar novamente.


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    sexta-feira, 24 de janeiro de 2020 14:05
  • De ontem pra hoje mesmo sem fazer um stop/start do serviço do SQL o DatabaseMail parou novamente.

    Eu rodei um script aqui

    HILE EXISTS(SELECT
         'ExternalMailQueue' AS ServiceBrokerQueueName,
         *
         FROM
         [dbo].[ExternalMailQueue])
      BEGIN
      WAITFOR ( receive TOP(1) conversation_group_id FROM [ExternalMailQueue] ), timeout 1000;
      END 
    
    [dbo].[sp_sysmail_activate]

    Agora voltou a funcional.

    Realmente pode ser algo relacionado ao Broker.

    Vou acompanhar mas ao que me parece vai parar novamente.


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    Ricardo,

    Verifique no Event Viewer do Windows os eventos que estão sendo relacionados ao Broker.

    Além disso, acesse este link: 

    Service Broker Target for Extended Events

    Nele você vai encontrar como criar uma sessão de monitoramento para os eventos do Service Broker através dos Extended Events no SQL Server.

    Em adicional, encontrei este script extraído:https://dba.stackexchange.com/questions/196571/is-there-a-service-broker-target-for-an-extended-event-session

    CREATE QUEUE InitiatorQueue;
    CREATE QUEUE TargetQueue;
    CREATE MESSAGE TYPE ExtendedEventMessageType VALIDATION = NONE;
    CREATE CONTRACT ExtendedEventMessageContract (
          ExtendedEventMessageType SENT BY ANY
        );
    CREATE SERVICE InitiatorService
        ON QUEUE dbo.InitiatorQueue (ExtendedEventMessageContract);
    CREATE SERVICE TargetService
        ON QUEUE dbo.TargetQueue (ExtendedEventMessageContract);
    GO
    
    CREATE EVENT SESSION service_broker_target_test ON SERVER 
    ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1))
    ADD TARGET sqlserver.service_broker(SET database_id=(14)
        ,initiator_service=N'InitiatorService'
        ,message_type=N'ExtendedEventMessageType'
        ,service_contract=N'ExtendedEventMessageContract'
        ,target_service=N'TargetService')
    WITH (
        MAX_MEMORY=4096 KB
        ,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
        ,MAX_DISPATCH_LATENCY=30 SECONDS
        ,MAX_EVENT_SIZE=0 KB
        ,MEMORY_PARTITION_MODE=NONE
        ,TRACK_CAUSALITY=OFF,
        STARTUP_STATE=OFF);
    GO
    
    ALTER EVENT SESSION service_broker_target_test ON SERVER 
        STATE = START;
    GO
    
    SELECT * FROM sys.conversation_endpoints;
    SELECT * FROM dbo.InitiatorQueue;
    SELECT * FROM dbo.TargetQueue;
    SELECT * FROM sys.dm_xe_session_targets
    WHERE target_name = 'service_broker';
    GO
    Ele poderá lhe ajudar a criar uma session no seu SQL Server para monitorar em tempo real o Service Broker do seu ambiente.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]




    sexta-feira, 24 de janeiro de 2020 14:10
    Moderador
  • De ontem pra hoje mesmo sem fazer um stop/start do serviço do SQL o DatabaseMail parou novamente.

    Eu rodei um script aqui

    HILE EXISTS(SELECT
         'ExternalMailQueue' AS ServiceBrokerQueueName,
         *
         FROM
         [dbo].[ExternalMailQueue])
      BEGIN
      WAITFOR ( receive TOP(1) conversation_group_id FROM [ExternalMailQueue] ), timeout 1000;
      END 
    
    [dbo].[sp_sysmail_activate]

    Agora voltou a funcional.

    Realmente pode ser algo relacionado ao Broker.

    Vou acompanhar mas ao que me parece vai parar novamente.


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    Ricardo,

    Verifique no Event Viewer do Windows os eventos que estão sendo relacionados ao Broker.

    Além disso, acesse este link: 

    Service Broker Target for Extended Events

    Nele você vai encontrar como criar uma sessão de monitoramento para os eventos do Service Broker através dos Extended Events no SQL Server.

    Em adicional, encontrei este script extraído:https://dba.stackexchange.com/questions/196571/is-there-a-service-broker-target-for-an-extended-event-session

    CREATE QUEUE InitiatorQueue;
    CREATE QUEUE TargetQueue;
    CREATE MESSAGE TYPE ExtendedEventMessageType VALIDATION = NONE;
    CREATE CONTRACT ExtendedEventMessageContract (
          ExtendedEventMessageType SENT BY ANY
        );
    CREATE SERVICE InitiatorService
        ON QUEUE dbo.InitiatorQueue (ExtendedEventMessageContract);
    CREATE SERVICE TargetService
        ON QUEUE dbo.TargetQueue (ExtendedEventMessageContract);
    GO
    
    CREATE EVENT SESSION service_broker_target_test ON SERVER 
    ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1))
    ADD TARGET sqlserver.service_broker(SET database_id=(14)
        ,initiator_service=N'InitiatorService'
        ,message_type=N'ExtendedEventMessageType'
        ,service_contract=N'ExtendedEventMessageContract'
        ,target_service=N'TargetService')
    WITH (
        MAX_MEMORY=4096 KB
        ,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
        ,MAX_DISPATCH_LATENCY=30 SECONDS
        ,MAX_EVENT_SIZE=0 KB
        ,MEMORY_PARTITION_MODE=NONE
        ,TRACK_CAUSALITY=OFF,
        STARTUP_STATE=OFF);
    GO
    
    ALTER EVENT SESSION service_broker_target_test ON SERVER 
        STATE = START;
    GO
    
    SELECT * FROM sys.conversation_endpoints;
    SELECT * FROM dbo.InitiatorQueue;
    SELECT * FROM dbo.TargetQueue;
    SELECT * FROM sys.dm_xe_session_targets
    WHERE target_name = 'service_broker';
    GO
    Ele poderá lhe ajudar a criar uma session no seu SQL Server para monitorar em tempo real o Service Broker do seu ambiente.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]




    Mantou, o owner do banco não tinha permissão, eu voltei o owner para o 'sa' e agora ta funfando lindão.

    Muito grato man.

    Abs.

    Mura


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    sexta-feira, 24 de janeiro de 2020 18:59
  • De ontem pra hoje mesmo sem fazer um stop/start do serviço do SQL o DatabaseMail parou novamente.

    Eu rodei um script aqui

    HILE EXISTS(SELECT
         'ExternalMailQueue' AS ServiceBrokerQueueName,
         *
         FROM
         [dbo].[ExternalMailQueue])
      BEGIN
      WAITFOR ( receive TOP(1) conversation_group_id FROM [ExternalMailQueue] ), timeout 1000;
      END 
    
    [dbo].[sp_sysmail_activate]

    Agora voltou a funcional.

    Realmente pode ser algo relacionado ao Broker.

    Vou acompanhar mas ao que me parece vai parar novamente.


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    Ricardo,

    Verifique no Event Viewer do Windows os eventos que estão sendo relacionados ao Broker.

    Além disso, acesse este link: 

    Service Broker Target for Extended Events

    Nele você vai encontrar como criar uma sessão de monitoramento para os eventos do Service Broker através dos Extended Events no SQL Server.

    Em adicional, encontrei este script extraído:https://dba.stackexchange.com/questions/196571/is-there-a-service-broker-target-for-an-extended-event-session

    CREATE QUEUE InitiatorQueue;
    CREATE QUEUE TargetQueue;
    CREATE MESSAGE TYPE ExtendedEventMessageType VALIDATION = NONE;
    CREATE CONTRACT ExtendedEventMessageContract (
          ExtendedEventMessageType SENT BY ANY
        );
    CREATE SERVICE InitiatorService
        ON QUEUE dbo.InitiatorQueue (ExtendedEventMessageContract);
    CREATE SERVICE TargetService
        ON QUEUE dbo.TargetQueue (ExtendedEventMessageContract);
    GO
    
    CREATE EVENT SESSION service_broker_target_test ON SERVER 
    ADD EVENT sqlserver.rpc_completed(SET collect_statement=(1))
    ADD TARGET sqlserver.service_broker(SET database_id=(14)
        ,initiator_service=N'InitiatorService'
        ,message_type=N'ExtendedEventMessageType'
        ,service_contract=N'ExtendedEventMessageContract'
        ,target_service=N'TargetService')
    WITH (
        MAX_MEMORY=4096 KB
        ,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS
        ,MAX_DISPATCH_LATENCY=30 SECONDS
        ,MAX_EVENT_SIZE=0 KB
        ,MEMORY_PARTITION_MODE=NONE
        ,TRACK_CAUSALITY=OFF,
        STARTUP_STATE=OFF);
    GO
    
    ALTER EVENT SESSION service_broker_target_test ON SERVER 
        STATE = START;
    GO
    
    SELECT * FROM sys.conversation_endpoints;
    SELECT * FROM dbo.InitiatorQueue;
    SELECT * FROM dbo.TargetQueue;
    SELECT * FROM sys.dm_xe_session_targets
    WHERE target_name = 'service_broker';
    GO
    Ele poderá lhe ajudar a criar uma session no seu SQL Server para monitorar em tempo real o Service Broker do seu ambiente.

    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]




    Mantou, o owner do banco não tinha permissão, eu voltei o owner para o 'sa' e agora ta funfando lindão.

    Muito grato man.

    Abs.

    Mura


    <a href="http://br.linkedin.com/in/ricardomuramatsu"><img src="http://www.linkedin.com/img/webpromo/btn_liprofile_blue_80x15.png" width="80" height="15" border="0" alt="View Ricardo Muramatsu's profile on LinkedIn"> </a>

    Ricardo,

    Que bom fico feliz, as permissões de acesso a banco de dados ainda mais se forem de sistema acabam impactando diretamente no funcionamento de alguns recursos do SQL Server.

    Até mais.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 24 de janeiro de 2020 19:50
    Moderador