Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Este artigo descreve alguns erros comuns encontrados no Database Mail e suas soluções.
Para executar comandos T-SQL em sua instância do SQL Server, use o SQL Server Management Studio (SSMS), a extensão MSSQL para Visual Studio Code, sqlcmd ou sua ferramenta de consulta T-SQL favorita.
Não foi possível localizar o procedimento armazenado 'sp_send_dbmail'
O procedimento armazenado sp_send_dbmail é instalado no msdb banco de dados. Você deve executar sp_send_dbmail do banco de dados msdb, ou especificar um nome de três partes para o procedimento armazenado.
Exemplo:
EXEC msdb.dbo.sp_send_dbmail ...
Ou:
USE msdb;
GO
EXEC dbo.sp_send_dbmail ...
Use Configurar o email do banco de dados para habilitar e configurar o email do banco de dados.
O perfil não é válido
Há duas causas possíveis para essa mensagem. Ou o perfil especificado não existe ou o usuário que está executando sp_send_dbmail (Transact-SQL) não tem permissão para acessar o perfil.
Para verificar permissões para um perfil, execute o procedimento armazenado sysmail_help_principalprofile_sp (Transact-SQL) com o nome do perfil. Use o procedimento armazenado sysmail_add_principalprofile_sp (Transact-SQL) ou o Configurar o email do banco de dados para conceder permissão para um msdb usuário ou grupo acessar um perfil.
Permissão negada em sp_send_dbmail
Este artigo descreve como solucionar problemas de uma mensagem de erro informando que o usuário que está tentando enviar o Database Mail não tem permissão para executar sp_send_dbmail
O texto do erro é:
EXECUTE permission denied on object 'sp_send_dbmail',
database 'msdb', schema 'dbo'.
Para enviar emails de banco de dados, os usuários devem ser usuários do banco de dados msdb e membros da função de banco de dados DatabaseMailUserRole no banco de dados msdb. Para adicionar usuários ou grupos do msdb a essa função, use o SQL Server Management Studio ou execute a instrução a seguir para o usuário ou função que precisa enviar Database Mail.
EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
,@membername = '<user or role name>';
GO
Para obter mais informações, veja sp_addrolemember e sp_droprolemember.
Database Mail colocado na fila, nenhuma entrada em sysmail_event_log ou no log de eventos de aplicativos do Windows
O Database Mail depende do Service Broker para enfileiramento de mensagens de email. Se o Database Mail for interrompido ou se a entrega de mensagens do Service Broker não for ativada no banco de dados, o msdb Database Mail enfileira mensagens no banco de dados, mas não poderá entregar as mensagens. Nesse caso, as mensagens do Service Broker permanecem na fila de email do Service Broker. O Service Broker não ativa o programa externo, portanto, não há entradas de log em sysmail_event_log e nenhuma atualização para o status do item em sysmail_allitems e nas exibições relacionadas.
Execute a seguinte instrução para verificar se o Service Broker está habilitado no msdb banco de dados:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
Um valor de 0 indica que a entrega de mensagens do Service Broker não está ativada no banco de dados msdb. Para corrigir o problema, ative o Service Broker no banco de dados com o seguinte comando Transact-SQL:
USE master ;
GO
ALTER DATABASE msdb SET ENABLE_BROKER ;
GO
O Database Mail depende de uma série de procedimentos armazenados internos. Para reduzir a área de superfície, esses procedimentos armazenados encontram-se desabilitados em novas instalações do SQL Server. Para habilitar esses procedimentos armazenados, use os XPs do Database Mail (opção de configuração do servidor) do procedimento armazenado do sp_configure sistema, como no exemplo a seguir:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;
GO
No banco de dados msdb, o Database Mail pode estar interrompido. Para verificar o status do Database Mail, execute o seguinte comando:
EXECUTE dbo.sysmail_help_status_sp;
Para iniciar o Database Mail em um banco de dados de host de email, execute o seguinte comando no msdb banco de dados:
EXECUTE dbo.sysmail_start_sp;
O Service Broker examina o tempo de vida da caixa de diálogo das mensagens quando se encontra ativado; portanto, toda mensagem que estiver na fila de transmissão do Service Broker por mais tempo que o tempo de vida configurado para a caixa de diálogo falhará imediatamente. O Database Mail atualiza o status de mensagens que falharam em sysmail_allitems e em exibições relacionadas. Você deve decidir se as mensagens devem ou não ser enviadas novamente. Para obter mais informações sobre como configurar o tempo de vida da caixa de diálogo que o Database Mail usa, consulte sysmail_configure_sp.