【问题标题】:Select extended properties of Roles选择角色的扩展属性
【发布时间】:2015-10-17 08:46:45
【问题描述】:

我想获得数据库角色的扩展属性。我可以使用以下命令获取用户的所有扩展属性列表:

use db;
SELECT * FROM fn_listextendedproperty (null, 'user', null, default, default, default, default)

但我无法为角色找到正确的 level types

通过使用以下命令,我可以看到角色的 class 是 4,而他们的 major id 是 10。

SELECT * FROM sys.extended_properties 

所以我可以通过以下命令得到我想要的东西:

SELECT * FROM sys.extended_properties WHERE class = 4 AND major_id = 10

但我更喜欢使用fn_listextendedproperty 函数获取列表。

【问题讨论】:

    标签: sql-server sql-server-2012 extended-properties


    【解决方案1】:

    来自sys.extended_properties (Transact-SQL)

    ma​​jor_id:扩展属性所在项目的 ID, 根据其类进行解释。

    所以major_id = 10sys.database_principals 中角色的principal_id

    class = 4 是数据库主体、用户和角色。

    您的第一个使用 fn_listextendedproperty 的查询应返回用户和角色的列表,并为这两种类型返回 obj_type = USER

    您需要使用sys.extended_properties 并加入sys.database_principals 来确定什么是用户,什么是角色。

    【讨论】:

    • 是的,我没有注意到user 也会返回角色。但是我应该以什么键加入他们?属性的名称不是唯一的,某些用户可能也有相似的属性名称。
    猜你喜欢
    • 2020-03-11
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    相关资源
    最近更新 更多