合:
SELECT grantee.name AS grantee ,
grantor.name ,
dp.permission_name AS permission ,
dp.state_desc AS state
FROM sys.database_permissions dp
JOIN sys.database_principals grantee ON dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor ON dp.grantor_principal_id = grantor.principal_id
WHERE dp.major_id = OBJECT_ID('dbo.prospect');
WITH GRANT OPTION工作原理:
意味着被授权的主体能把相同或者少于当前权限的权限授予给其他主体。比如
GRANT SELECT ON OBJECT::dbo.contact TO fred WITH GRANT OPTION;
这个授予了Fred有两个权限,一个是SELECT,一个是GRANT SELECT,可以回收除了SELECT之外的其他权限:
REVOKE SELECT ON OBJECT::dbo.contact TO fred CASCADE;
GRANT SELECT ON OBJECT::dbo.contact TO fred;
这两个语句就是先回收所有权限,然后仅赋予SELECT,加上CASCADE的含义是把Fred曾经授权给其他主体的SELECT权限一并收回。
REFERENCE权限:
这个权限不仅仅作用域表,还可以作用于数据库、架构等主体。REFERENCE在表中允许创建外键约束,在视图中可以用于WITH SCHEMABINDING 所影响的表的引用。
下一篇: