我们工作的数据库为新用户提供了一些标准权限,但有时有些用户需要的权限超出了通常的权限(其中大多数是对几个 SP 的 EXEC)。我一直在管理这些用户 GRANT。但出于管理目的,我想创建一个包含其中一些信息的个人表,以便我可以轻松快速地区分角色和用户信息。
您知道我可以在其中找到并使用这些信息的任何系统表吗?
编辑:
我们目前正在使用 SQL Server 2008。
我们工作的数据库为新用户提供了一些标准权限,但有时有些用户需要的权限超出了通常的权限(其中大多数是对几个 SP 的 EXEC)。我一直在管理这些用户 GRANT。但出于管理目的,我想创建一个包含其中一些信息的个人表,以便我可以轻松快速地区分角色和用户信息。
您知道我可以在其中找到并使用这些信息的任何系统表吗?
编辑:
我们目前正在使用 SQL Server 2008。
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