2014-03-14 62 views
0

有沒有辦法查看添加到SQL Server中特定角色的所有權限?如何在SQL Server中查看角色權限?

在SSMS中查看角色的「屬性」時,我只能看到該角色擁有的模式。
在我們無法使用GUI查看的情況下,是否有系統視圖可供調用?

編輯:
更確切地說,我希望能夠看到相應的現有角色像「的db_owner」,例如數據庫中的所有權利。

+0

如何http://consultingblogs.emc.com/jamiethomson/archive/2007/02/09/ SQL-Server-2005_3A00_-View-all-permissions --_ 2800_2_2900_.aspx – DNac

+0

它不符合我的需要。我想要角色權限,而不是用戶權限。 – Spilarix

+0

你檢查過這個嗎? http://dba.stackexchange.com/questions/36618/list-all-permissions-for-a-given-role – dcp

回答

0

你可以玩SYS。並嘗試做一個 下面的示例:

WITH perms_cte as 
(
     select USER_NAME(p.grantee_principal_id) AS principal_name, 
       dp.principal_id, 
       dp.type_desc AS principal_type_desc, 
       p.class_desc, 
       OBJECT_NAME(p.major_id) AS object_name, 
       p.permission_name, 
       p.state_desc AS permission_state_desc 
     from sys.database_permissions p 
     inner JOIN sys.database_principals dp 
     on  p.grantee_principal_id = dp.principal_id 
) 
--users 
SELECT p.principal_name, p.principal_type_desc, p.class_desc, p.[object_name], p.permission_name, p.permission_state_desc, cast(NULL as sysname) as role_name 
FROM perms_cte p 
WHERE principal_type_desc <> 'DATABASE_ROLE' 
UNION 
--role members 
SELECT rm.member_principal_name, rm.principal_type_desc, p.class_desc, p.object_name, p.permission_name, p.permission_state_desc,rm.role_name 
FROM perms_cte p 
right outer JOIN (
    select role_principal_id, dp.type_desc as principal_type_desc, member_principal_id,user_name(member_principal_id) as member_principal_name,user_name(role_principal_id) as role_name--,* 
    from sys.database_role_members rm 
    INNER JOIN sys.database_principals dp 
    ON  rm.member_principal_id = dp.principal_id 
) rm 
ON  rm.role_principal_id = p.principal_id 

也還有的這個系統SP

exec sp_helprole 
+0

謝謝你的建議,但它不符合我的需要。 (就像我對DNac說的)。 – Spilarix