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 Correio de Base de Dados envolve a verificação das seguintes áreas gerais do sistema Correio de Base de Dados. Estes procedimentos são apresentados numa ordem lógica, mas podem ser avaliados em qualquer ordem.
Permissões
Para solucionar todos os aspectos do Correio de Base de Dados, 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.
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.
No SQL Server Management Studio, ligue-se a uma instância do SQL Server usando uma janela do editor de consultas. Verifique se o service broker está ativado no
msdbcom o seguinte script T-SQL:SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1- Se ativado, continue a Verificar que o correio da base de dados está ativado e Verificar se o correio da base de dados foi iniciado.
- 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
msdbhorário comercial típico.Pare o serviço SQL Server Agent para que o Service Broker possa obter o bloqueio necessário.
Execute o seguinte para ativar o Service Broker em
msdb. Para mais informações, vejaALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER;Reinicie o serviço SQL Server Agent.
Verificar que o correio da base de dados está ativado
No SQL Server Management Studio, ligue-se a uma instância do SQL Server usando uma janela do editor de consultas. Verificar que o correio da base de dados está ativado com o seguinte código:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GONo painel de resultados, confirme que o
run_valuepara Correio de Base de Dados XPs (opção de configuração do servidor) está definido como1.- Se for
run_value1, continue a Verificar que o correio da base de dados foi iniciado. - Se o
run_valuenão for1, o Correio de Base de Dados não estará habilitado.
O Correio de Base de Dados 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 for
Se você decidir que é apropriado habilitar o Correio de Base de Dados, 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
Verificar que o correio da base de dados foi iniciado
O Programa Externo do Correio de Base de Dados é 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.
No SQL Server Management Studio, ligue-se a uma instância do SQL Server usando uma janela do editor de consultas. Para verificar se o programa externo Correio de Base de Dados foi iniciado, execute a seguinte instrução:
EXEC msdb.dbo.sysmail_help_status_sp;Se o estado do Correio de Base de Dados não for
STARTED, execute a seguinte instrução para iniciar o serviço:EXEC msdb.dbo.sysmail_start_sp;Se o programa externo do Correio de Base de Dados 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 utilizadores estão devidamente configurados para enviar e-mails?
Para enviar o Correio de Base de Dados, 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 Correio de Base de Dados, os usuários devem ter acesso a pelo menos um perfil do Correio de Base de Dados. 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 Correio de Base de Dados para criar perfis e conceder acesso aos perfis aos usuários.
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 Correio de Base de Dados 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 Correio de Base de Dados 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 Correio de Base de Dados, execute a seguinte instrução:
SELECT * FROM msdb.dbo.sysmail_event_log;Observação
O Correio de Base de Dados 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 Correio de Base de Dados.
Repetir a entrega do correio
Se você tiver determinado que o Correio de Base de Dados 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 Correio de Base de Dados tenta enviar cada mensagem. Inicie o Assistente de Configuração do Correio de Base de Dados 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 Correio de Base de Dados 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 Correio de Base de Dados de entrar em contato com o servidor SMTP prontamente.
Conteúdo relacionado
- Objetos de configuração do Correio de Base de Dados
- Objetos de mensagens do Correio de Base de Dados
- Programa Externo do Correio de Base de Dados
- Registos e Auditorias do Correio de Base de Dados
- Configurar o SQL Server Agent
- Configurar o email do SQL Server Agent para usar o Correio de Base de Dados