У меня есть экземпляр SQL Server 2012 под управлением учетной записи управляемой службы. Я настроил почту базы данных с одной учетной записью и пытаюсь отправить тестовое письмо, но я получаю некоторые ошибки в журналах событий сервера:
Экземпляр компонента Database Engine = MYINSTANCE; PID почты = 2132; Сообщение об ошибке: не удалось обновить базу данных. Причина: отказано в разрешении EXECUTE для объекта 'sysmail_logmailevent_sp', базы данных 'msdb', схемы 'dbo'.
Экземпляр компонента Database Engine = MYINSTANCE; PID почты = 2212; Тип исключения: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException Сообщение. Ошибка чтения в базе данных. Причина: было отказано в разрешении EXECUTE для объекта 'sp_readrequest', базы данных 'msdb', схемы 'dbo'. Данные: System.Collections.ListDictionaryInternal TargetSite: Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand (System.Data.SqlClient.SqlCommand) HelpLink: NULL Источник: DatabaseMailEng
Если я сделаю учетную запись, выполняющую процесс SQL Server, системным администратором, эта ошибка исчезнет, и письма будут успешно отправлены. Тем не менее, все исследования, которые я провел, показывают, что предоставление этой учетной записи DatabaseMailUserRole
роли в msdb
базе данных должно быть достаточным. Я сделал это и до сих пор получаю те же ошибки.
Я посмотрел в BOL, но ничего не смог найти.
Ответы:
Для учетной записи службы агента SQL Server требуются разрешения sysadmin для экземпляра.
Microsoft KB
источник