Разрешение на выполнение хранимой процедуры для db-роли - PullRequest
4 голосов
/ 09 марта 2011

Я хотел бы дать роли db_datareader разрешение на выполнение определенной хранимой процедуры.

Возможно ли это, и если да, то как я могу этого достичь?Я попытался добавить роль на вкладке разрешений хранимой процедуры, но это, похоже, не работает, роль не принимается как допустимый объект.

Редактировать
Основываясь на ответе cainz, я попытался GRANT EXECUTE ON [SP_NAME] TO db_datareader, однако сообщение было:

Msg 4617, Level 16, State 1, Line 1
Cannot grant, deny or revoke permissions to or from special roles.

Кажется, что это не таквозможно то, что я хотел сделать.

Ответы [ 2 ]

6 голосов
/ 09 марта 2011

Вы не можете делать то, что вы хотите напрямую, потому что вы не можете изменить разрешения для системных ролей.Это хорошо: вы не хотите, чтобы ваши системные роли имели другое определение, чем у всех остальных, потому что патчи и пакеты обновления могут иметь побочные эффекты, сторонние инструменты могут сломаться, новые разработчики будут (неприятно) удивлены и т. Д.

Вам просто нужно управлять разрешениями в вашей базе данных, используя скрипт или другие инструменты.Очевидное решение состоит в том, чтобы просто создать свою собственную роль и поместить пользователей вашей базы данных в обе роли;это легко написать, и в любом случае рекомендуется планировать и документировать вашу модель безопасности.Есть ли какая-то конкретная причина, по которой это не подходит для вашей среды?

(Примечание: можно добавить свою собственную роль в db_datareader, но документация специально предупреждает , что нет, чтобы сделать это.)

2 голосов
/ 09 марта 2011

Это задокументировано на BOL / MSDN на http://msdn.microsoft.com/en-us/library/ms345484.aspx - обратите внимание на желтое поле, указывающее, что вам нужно делать, если это системная процедура.

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