从技术上讲,我需要 C# 中的代码,但 SQL 也可以。假设我有一个 SQL Server 2008 或更高版本的登录名或用户帐户。让我们称之为c_user002
。
如何将数据库映射到该用户?
如何获得此用户的角色成员资格(或权限)?
这两个概念都可以通过 SQL Server Management Studio 的屏幕截图得到最好的说明:
从技术上讲,我需要 C# 中的代码,但 SQL 也可以。假设我有一个 SQL Server 2008 或更高版本的登录名或用户帐户。让我们称之为c_user002
。
如何将数据库映射到该用户?
如何获得此用户的角色成员资格(或权限)?
这两个概念都可以通过 SQL Server Management Studio 的屏幕截图得到最好的说明:
这是部分答案。您可以使用此查询找出哪些用户对哪些对象拥有哪些权限:
SELECT
dp.name AS DBUser,
dp.type_desc AS UserType,
OBJECT_NAME(p.major_id) AS ObjectName,
p.permission_name AS Permission,
p.state_desc AS PermissionStatus,
dp.is_fixed_role AS BuiltInRole
FROM
sys.database_permissions AS p
LEFT OUTER JOIN
sys.database_principals AS dp
ON
dp.principal_id = p.grantee_principal_id
WHERE (p.class = 1); -- Limit to Object or Column;
请注意,这仅适用于当前数据库。不过,您始终可以循环获取它们。