Почему роль базы данных не будет встроенной «сохраненной процедуры исполнителя»?

StackOverflow https://stackoverflow.com/questions/4239761

Вопрос

Я всегда задавался вопросом, почему список ролей базы данных (db_datareader, db_datawriter, db_ddladmin, и т. Д.) Никогда не включал db_storedprocedureexecutor. Отказ Другие имеют смысл, но кажется, что способность предоставлять возможность выполнять все хранимые ProCES для конкретного пользователя (без предоставления их db_owner, который является единственным другим способом достичь то же самое) было бы удобным.

Например, скажем, я хочу дать всем своим разработчикам права запускать сохраненные процедуры, не позволяя им выполнить любой DDL - без явного предоставления выполнения в каждой сохраненной процедуре (а затем вспоминать, чтобы добавить новые, когда дополнительные SPS развернуты) , нет никакого способа сделать это (я знаю, что SPS может содержать DDL, чтобы они все еще могли быть косвенно доступен доступом к DDL таким образом).

Если у меня есть учетная запись службы приложений, и ряд хранимых процедур, которые идут вместе с моим приложением, я должен четко предоставить права на каждый SP (так как я не хочу предоставлять мою учетную запись службы приложений DBO), тогда как я могу использовать Роль позволит им обновлять / удалять все, что они хотят.

Хотя это изначально казалось очевидным, я сейчас не уверен, почему эта роль отсутствует на сервере базы данных - можно ли кто-нибудь предложить объяснение того, почему это ужасная идея (как я предполагаю, или это уже существует)?

РЕДАКТИРОВАТЬ:

Кажется, я не единственный с этим ожиданием - и Он работал с горсткой T-SQL (Похоже, вы можете предоставить одеяло, выполненное право, которое я не знал, что вы могли сделать), который просто оставляет мне интересно, почему это не стандартное!

Это было полезно?

Решение

Если вы используете схемы, то вам нужно только GRANT EXECUTE ON SCHEMA::storedprocschema

например CREATE PROC storedprocschema.DoStuff ...

Что касается почему нет идеи ...

Другие советы

Потому что, если вы можете выполнить все сохраненные процедуры, вы можете выполнить sp_addrolemember, и вы можете сделать все, что database_owner могу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top