Eu tenho uma instância do SQL Server 2012 em execução em uma conta de serviço gerenciado. Configurei o correio do banco de dados com uma conta e estou tentando enviar um email de teste, mas estou recebendo alguns erros nos logs de eventos do servidor:
Instância do mecanismo de banco de dados = MYINSTANCE; Mail PID = 2132; Mensagem de erro: Falha na atualização do banco de dados. Motivo: a permissão EXECUTE foi negada no objeto 'sysmail_logmailevent_sp', banco de dados 'msdb', esquema 'dbo'.
Instância do mecanismo de banco de dados = MYINSTANCE; Mail PID = 2212; Tipo de exceção: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException Mensagem: A leitura no banco de dados falhou. Motivo: a permissão EXECUTE foi negada no objeto 'sp_readrequest', banco de dados 'msdb', esquema 'dbo'. Dados: System.Collections.ListDictionaryInternal TargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand (System.Data.SqlClient.SqlCommand) HelpLink: NULL Fonte: DatabaseMailEngine
Se eu tornar a conta que executa o processo do SQL Server um administrador de sistema, esse erro desaparece e os e-mails são enviados com êxito. No entanto, toda a pesquisa que fiz sugere que atribuir a essa conta o DatabaseMailUserRole
papel no msdb
banco de dados deve ser suficiente. Eu fiz isso e ainda recebo os mesmos erros.
Dei uma olhada no BOL, mas não consegui encontrar nada.
fonte
Respostas:
A conta de serviço do SQL Server Agent requer permissões sysadmin na instância.
Microsoft KB
fonte