Я хотел бы знать, как настроить разрешения в SQL Server, чтобы мое имя пользователя / роль моего приложения могла отправлять электронную почту с помощью msdb .dbo.sp_send_dbmail
.
У меня есть база данных MyDb, пользователь MyUser
, который является членом роли AppRole
. У меня есть хранимая процедура myProc
, которая вызывает msdb.dbo.sp_send_dbmail
. Если я выполняю myProc
при входе в систему как sa
, все работает нормально, но если я выполняю вход как MyUser
, я получаю сообщение об ошибке:
Msg 229, уровень 14, состояние 5, процедура sp_send_dbmail, строка 1
В разрешении EXECUTE было отказано в объекте 'sp_send_dbmail', базе данных 'msdb', схеме 'dbo'.
В моей базе данных нет TRUSTWORTHY ON, поэтому я считаю, что не могу использовать EXECUTE AS для выдавать себя за другого пользователя, например, создать myProc с EXECUTE AS OWNER ... ( Ссылка MSDN )
Поэтому я думаю, что мне нужно сделать своих пользователей также пользователями в msdb, но могу ли я это сделать на уровне ролей или мне нужно сделать каждого из пользователей моей базы данных также пользователями в msdb?
Почтовый профиль базы данных, который я использую, является общедоступным, поэтому я не думаю, что это связано с разрешениями профиля.