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

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

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

Ответы [ 4 ]

3 голосов
/ 07 апреля 2011

Вы можете использовать EXECUTE AS и подписать свою процедуру, а затем использовать сертификат подписи для предоставления разрешения EXECUTE в msdb. См. Вызов процедуры в другой базе данных из активированной процедуры , а также Подписание процедур с сертификатами .

1 голос
/ 21 ноября 2011

Согласно microsoft вам просто нужно дать пользователям разрешение на «роль базы данных DatabaseMailUser в базе данных msdb».

1 голос
/ 06 апреля 2011

У вас должна быть возможность просто предоставить открытый доступ MyUser для MSDB, а затем предоставить этому пользователю доступ на выполнение в процедуре sp_send_dbmail. Вы можете добавить пользователя самостоятельно или создать пользовательскую роль в MSDB и добавить всех пользователей, которым требуется exec-доступ, к sp_send_dbmail.

0 голосов
/ 24 ноября 2016

вам нужно дать роль базы данных -> databaseusermailuserRole

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...