Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
A solução de problemas do Database Mail envolve a verificação das seguintes áreas gerais do sistema Database Mail. Estes procedimentos são apresentados numa ordem lógica, mas podem ser avaliados em qualquer ordem.
Permissões
Para solucionar todos os aspectos do Database Mail, deve ser um membro da função de servidor fixa sysadmin. Os usuários que não são membros da função de servidor fixa sysadmin só podem obter informações sobre os e-mails que tentam enviar, não sobre e-mails enviados por outros usuários.
O email do banco de dados está habilitado
No SQL Server Management Studio, conecte-se a uma instância do SQL Server usando uma janela do editor de consultas e execute o seguinte código:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GONo painel de resultados, confirme que o
run_valuepara Database Mail XPs (opção de configuração do servidor) está definido como1.Se o
run_valuenão for1, o Database Mail não estará habilitado.O Database Mail não é ativado automaticamente para reduzir o número de recursos disponíveis para ataques de um usuário mal-intencionado. Para obter mais informações, consulte Configuração da área de superfície.
Se você decidir que é apropriado habilitar o Database Mail, execute o seguinte código:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOPara restaurar o
sp_configureprocedimento ao seu estado padrão, que não mostra opções avançadas, execute o seguinte código:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Os usuários estão configurados corretamente para enviar e-mails
Para enviar o Database Mail, os usuários devem ser membros da função de banco de dados DatabaseMailUserRole no
msdbbanco de dados. Os membros da função de servidor fixa sysadmin e da funçãomsdbsão automaticamente membros da função DatabaseMailUserRole. Para listar todos os outros membros do DatabaseMailUserRole, execute a seguinte instrução:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';Para adicionar usuários à função DatabaseMailUserRole , use a seguinte instrução:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';Para enviar o Database Mail, os usuários devem ter acesso a pelo menos um perfil do Database Mail. Para listar os utilizadores (principais) e os perfis aos quais eles têm acesso, execute a instrução a seguir.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Use o Assistente de Configuração do Database Mail para criar perfis e conceder acesso aos perfis aos usuários.
Está o email do banco de dados iniciado?
O Programa Externo do Database Mail é ativado quando há mensagens de email a serem processadas. Quando não houver mensagens para enviar durante o período de tempo limite especificado, o programa será encerrado.
Para confirmar se a ativação do Database Mail foi iniciada, execute a seguinte instrução:
EXEC msdb.dbo.sysmail_help_status_sp;Se a ativação do Database Mail não for iniciada, execute a seguinte instrução para iniciá-la:
EXEC msdb.dbo.sysmail_start_sp;Se o programa externo do Database Mail for iniciado, verifique o status da fila de email com a seguinte instrução:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';A fila de correio deve ter o estado de
RECEIVES_OCCURRING. A fila de status pode variar de momento para momento. Se o estado da fila de correio não forRECEIVES_OCCURRING, tente reiniciar a fila. Pare a fila usando a seguinte instrução:EXEC msdb.dbo.sysmail_stop_sp;Em seguida, inicie a fila usando a seguinte instrução:
EXEC msdb.dbo.sysmail_start_sp;Observação
Use a coluna
lengthno conjunto de resultados desysmail_help_queue_sppara determinar o número de emails na fila.
Os problemas afetam algumas ou todas as contas
Se você determinou que alguns, mas não todos, os perfis podem enviar email, talvez tenha problemas com as contas do Database Mail usadas pelos perfis problemáticos.
Para determinar quais contas são bem-sucedidas no envio de e-mails, execute a seguinte instrução:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Se um perfil inativo não usar nenhuma das contas listadas, é possível que todas as contas disponíveis nesse perfil não estejam a funcionar corretamente. Para testar contas individuais, use o Assistente de Configuração do Database Mail para criar um novo perfil com uma única conta e use a caixa de diálogo Enviar Email de Teste para enviar emails usando a nova conta.
Para exibir as mensagens de erro retornadas pelo Database Mail, execute a seguinte instrução:
SELECT * FROM msdb.dbo.sysmail_event_log;Observação
O Database Mail considera que o email é enviado quando é entregue com êxito a um servidor de email SMTP. Erros subsequentes, como um endereço de email de destinatário inválido, ainda podem impedir que emails sejam entregues, mas não estarão contidos no log do Database Mail.
Repetir a entrega do correio
Se você tiver determinado que o Database Mail está falhando porque o servidor SMTP não pode ser alcançado de forma confiável, poderá aumentar sua taxa de entrega de email bem-sucedida aumentando o número de vezes que o Database Mail tenta enviar cada mensagem. Inicie o Assistente de Configuração do Database Mail e selecione a opção Exibir ou alterar parâmetros do sistema. Como alternativa, você pode associar mais contas ao perfil para que, em caso de failover da conta principal, o Database Mail use a conta de failover para enviar emails.
Na página Configurar Parâmetros do Sistema, os valores padrão de cinco vezes para as Tentativas de Repetição de Conta e 60 segundos para o Atraso de Repetição de Conta significam que a entrega de mensagens falhará se o servidor SMTP não puder ser alcançado em 5 minutos. Aumente esses parâmetros para aumentar o tempo antes que a entrega da mensagem falhe.
Observação
Quando um grande número de mensagens está sendo enviado, grandes valores padrão podem aumentar a confiabilidade, mas aumentarão substancialmente o uso de recursos, já que muitas mensagens são tentadas para serem entregues repetidamente. Resolva o problema raiz resolvendo o problema de rede ou servidor SMTP que impede o Database Mail de entrar em contato com o servidor SMTP prontamente.
Verifique se o service broker está habilitado para msdb
O Database Mail requer que o Service Broker esteja habilitado para o msdb banco de dados. Verifique se o service broker está ativado no msdb com o seguinte script T-SQL:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1
Se não estiver habilitado, o service broker deverá estar habilitado. No entanto, o script de exemplo a seguir requer acesso exclusivo aos bancos de dados do sistema, portanto, isso pode não ser viável de executar durante o msdb horário comercial típico. Para obter mais informações, consulte ALTER DATABASE ... CONFIGURAR ENABLE_BROKER.
ALTER DATABASE msdb SET ENABLE_BROKER;