6

Я использую выпуск SQL Server 2008 Express.Как предоставить права на выполнение роли роли базы данных в схеме? Что я делаю не так?

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

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

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

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

GRANT EXEC ON SCHEMA::schema_name TO role_name 

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

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

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

WITH EXECUTE AS OWNER 

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

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

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

Любые предложения/комментарии будут действительно оценены.

Спасибо.

+0

Предоставили ли вы разрешения на выполнение для пользователя, созданного для Sproc? –

ответ

4

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

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

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

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

Кроме того, убедись владельцем вашей определенного пользователя схемы является «ДБ».

+1

GRANT СМОТРЕТЬ ЛЮБОЕ ОПРЕДЕЛЕНИЕ [someUser] GRANT VIEW SERVER STATE TO [someUser]/* Это еще 2 разрешения, чтобы дать «только для чтения» все * / – granadaCoder