0

从技术上讲,我需要 C# 中的代码,但 SQL 也可以。假设我有一个 SQL Server 2008 或更高版本的登录名或用户帐户。让我们称之为c_user002

  1. 如何将数据库映射到该用户?

  2. 如何获得此用户的角色成员资格(或权限)?

这两个概念都可以通过 SQL Server Management Studio 的屏幕截图得到最好的说明:

在此处输入图像描述

4

1 回答 1

1

这是部分答案。您可以使用此查询找出哪些用户对哪些对象拥有哪些权限:

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;

请注意,这仅适用于当前数据库。不过,您始终可以循环获取它们。

于 2017-11-15T22:46:04.100 回答