我们工作的数据库对新用户有一些标准权限,但有时用户需要的权限多于通常的权限(大多数是EXEC到几个SP)。 我一直在管理这些用户GRANT。但是出于管理目的,我想创建一个包含一些信息的个人表格,以便我可以轻松快速地区分角色和用户信息。
您知道我可以找到并使用此信息的任何系统表吗?
编辑:
我们目前正在使用SQL Server 2008。
答案 0 :(得分:1)
SELECT
dp.class_desc, dp.permission_name, dp.state_desc,
ObjectName = OBJECT_NAME(major_id), GranteeName = grantee.name, GrantorName = grantor.name
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
对于角色:
SELECT
p.name, p.type_desc, pp.name, pp.type_desc, pp.is_fixed_role
FROM sys.database_role_members roles
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
JOIN sys.database_principals pp ON roles.role_principal_id = pp.principal_id