Доступ только для чтения к содержимому хранимой процедуры - PullRequest
26 голосов
/ 20 августа 2010

Можно ли настроить SQL Server, чтобы предоставить разработчикам доступ только для чтения к содержимому хранимых процедур в нашей производственной базе данных?

Ответы [ 5 ]

43 голосов
/ 20 августа 2010

Предоставьте им 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
9 голосов
/ 09 апреля 2013

Пример выполнения на уровне области действия схемы для dbo.

определение определения представления на схеме :: [dbo] для BOB

MSDN

6 голосов
/ 11 июля 2014

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

предоставить определение представления для схемы :: [dbo] для "domain \ BOB"

1 голос
/ 03 декабря 2014

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

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 голосов
/ 08 февраля 2018

Хотя я знаю, что уже поздно отвечать на вопрос, но для тех людей, которые пришли сюда в поисках ответа (как я это делал несколько минут назад) хотя бы в SQL Management Studio 2014, вы можете отредактировать учетную запись пользователя.и отредактируйте разрешения в области ЗАЩИЩЕННЫЕ и отметьте все поля в ПРОСМОТРЕ, к которым вы хотите, чтобы у них был доступ.

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

...