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