Можно ли настроить SQL Server, чтобы предоставить разработчикам доступ только для чтения к содержимому хранимых процедур в нашей производственной базе данных?
Только чтение содержимого хранимой процедуры
Ответ 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
Ответ 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')