2010-08-20 2 views

ответ

37

Даруй им VIEW DEFINITION привилегию на эти проки, смотрите здесь http://msdn.microsoft.com/en-us/library/ms175808.aspx

Существует

  • области сервера

  • области базы данных

  • сфера Схема

  • Отдельные лица

Вы также можете использовать запрос для создания сценария. так что если у вас есть пользователь Bob

select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema) 
+ '.' + quotename(specific_name) 
+ ' TO ' + 'BOB' 
    from INFORMATION_SCHEMA.routines 
where routine_type = 'PROCEDURE' 

Это даст вам что-то вроде этого, что вы можете запустить

GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO BOB 
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO BOB 
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO BOB 
+1

Есть ли альтернативы для установки его на хранимую процедуру? Я надеялся на метод, который не требовал изменения каждого proc. – adam0101

+0

см. Обновленный ответ – SQLMenace

+0

Awesome. Спасибо – adam0101

7

Пример делать на уровне области схемы для DBO.

субсидия определение представления на схеме :: [DBO] Бобу

MSDN

4

мне нужно предоставить доступ к учетной записи домена .. синтаксис для этого был

субсидия определение представления на схеме: : [DBO] в "домен \ ЛПП"

0

Мой вариант для всех процедур БД:

select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name + 
     '] TO ' + '[domain\username]' 
    from sys.all_objects 
where type_desc = 'SQL_STORED_PROCEDURE' 
    and schema_id <> schema_id('sys') 
0

Хотя я знаю, что это уже поздно в ответ на вопрос, но для тех людей, которые пришли сюда, чтобы найти ответ (так же, как я сделал несколько минут назад), по крайней мере, в студии управления SQL 2014 вы можете редактировать учетную запись пользователя и отредактируйте разрешения в области SECURABLES и отметьте все поля в VIEW, к которым вы хотите иметь доступ.

Выполнение вышеуказанного без необходимости запуска скриптов.

Смежные вопросы