Подтвердить что ты не робот

Только чтение содержимого хранимой процедуры

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

4b9b3361

Ответ 1

Предоставьте им привилегии VIEW DEFINITION для этих процессов, см. здесь http://msdn.microsoft.com/en-us/library/ms175808.aspx

Существует

  • Объем сервера

  • Область базы данных

  • Область схемы

  • Индивидуальные объекты

вы также можете использовать запрос для генерации script. поэтому, если у вас есть пользователь 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

Ответ 2

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

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

MSDN

Ответ 3

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

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

Ответ 4

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

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')