Как предоставить доступ к почтовым процедурам базы данных SQL Server для входа в другую базу данных?

Я хотел бы знать, как настроить разрешения в 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?

Почтовый профиль базы данных, который я использую, является общедоступным, поэтому я не думаю, что это связано с разрешениями профиля.

8
задан Aaron Bertrand 14 September 2012 в 13:05
поделиться