架构权限
-- execute permission on programmability objects in CMV schema
GRANT EXECUTE ON SCHEMA::CMV TO cmv_executor
-- DML permissions on tables/views in CMV schema
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::CMV TO cmv_viewer
这样应该可以消除将用户添加到db_datareader
和db_datawriter
角色,除非用户需要比其他CMV
模式读取/写入的对象的需要。
有关granting schema permissions的更多信息,请参阅此处。
对象权限
-- use output of this query to grant permissions for individual objects
SELECT
'GRANT SELECT ON ' +
QUOTENAME(SCHEMA_NAME(schema_id)) + '.' +
QUOTENAME(name) + ' TO [cmv_viewer];'
FROM
sys.objects
WHERE
SCHEMA_NAME(schema_id) = 'CMV'
AND
type_desc = 'VIEW'
UNION
SELECT
'GRANT EXECUTE ON ' +
QUOTENAME(SCHEMA_NAME(schema_id)) + '.' +
QUOTENAME(name) + ' TO [cmv_executor];'
FROM
sys.objects
WHERE
SCHEMA_NAME(schema_id) = 'CMV'
AND
type_desc IN ('SQL_STORED_PROCEDURE', 'SQL_SCALAR_FUNCTION',
'SQL_INLINE_TABLE_VALUED_FUNCTION');
我不包括CLR
函数或过程,所以如果需要添加这些。发现type_desc
列的有效值为here。
EXECUTE是否代表程序AND的功能?另一个如何授予对VIEWS的权限? – 2012-03-15 14:32:04
视图不属于'GRANT SELECT'吗? – 2012-03-15 14:35:50
@PrisonerZERO看一下这个页面,了解有关权限以及它们如何应用于各种对象类型的信息。 http://msdn.microsoft.com/en-us/library/ms191291.aspx – Bryan 2012-03-15 14:55:36