Как предоставить роли базы данных разрешения на выполнение для схемы?Что я делаю неправильно? - PullRequest
6 голосов
/ 13 декабря 2010

Я использую SQL Server 2008 Express edition.

Я создал логин, пользователя, роль и схему.Я сопоставил пользователя с именем входа и назначил ему роль.

Схема содержит несколько таблиц и хранимых процедур.

Я бы хотел, чтобы у роли были права на выполнениевся схема.

Я попытался предоставить разрешение на выполнение через Management Studio и путем ввода команды в окне запроса.

GRANT EXEC ON SCHEMA::schema_name TO role_name

Но при подключении к базе данных с помощью SQL Management Studio (как имя входа, которое я создал) во-первых, я не вижу хранимые процедуры, но, что более важно, я получаю ошибку отказа в разрешении при попытке их запустить.

Рассматриваемая хранимая процедура ничего не делает, кроме выбора данных из таблицы вто же самое.

Я пытался создать хранимую процедуру со строкой и без нее:

WITH EXECUTE AS OWNER

Это не имеет никакого значения.

Я подозреваю, что ясделал ошибку при создании моей схемы, или где-то есть проблема с правами собственности, но я действительно изо всех сил пытаюсь получить некоторыевсе работает.

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

Буду очень признателен за любые предложения / комментарии.

Спасибо.

1 Ответ

4 голосов
/ 17 мая 2011

Есть несколько проблем, которые я вижу в вашем случае.

Прежде всего вам понадобится View Definition, чтобы вы могли видеть объекты в Management studio.

Я бы порекомендовал это, если вы хотите, чтобы у роли были все разрешения,

GRANT EXECUTE, SELECT, INSERT, UPDATE, DELETE, VIEW DEFINITION
    ON Schema::SchemaName TO [RoleName/LoginName]

Также убедитесь, что владельцем вашей пользовательской схемы является «dbo».

...