架構權限
-- 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