【问题标题】:Member of db_datareader database roledb_datareader 数据库角色的成员
【发布时间】:2017-02-20 14:57:47
【问题描述】:

我不是 db_datareader 数据库角色的成员,但我仍然可以对表进行选择操作。在什么情况下需要将用户添加到该角色? 不成为 db_datareader 的成员,怎么可能做选择操作?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    如果您是另一个角色的成员,并且为该对象授予了select,您可以进行选择。 db_datareader 是一个固定角色,它绕过选择授权(您不能为具有 db_datareader 的用户撤销选择)。

    【讨论】:

    • 还有哪些其他可能的角色可以授予选择权限?角色是否默认授予此权限?
    • 您的管理员应该能够通过什么机制告诉您您拥有的权限。您可以自己做的一件事是select * from sys.user_token,以查看您在数据库中属于哪些角色。这可能提供足够的线索!
    • 要查看在数据库中分配了哪些权限,我使用这个:SELECT coalesce(Obj.type_desc, class_desc) as Type, coalesce(Obj.name, db_name()) AS What, [Perm].state_desc, [Perm].permission_name, who.name AS who FROM sys.database_permissions AS [Perm] INNER JOIN sys.database_principals AS who ON [Perm].grantee_principal_id = who.principal_id LEFT OUTER JOIN sys.all_objects AS Obj ON [Perm].major_id = Obj.object_id WHERE ([Perm].major_id >= 0) and (Obj.is_ms_shipped = 0 or class_desc = 'DATABASE') order by class, type, who.name
    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 2012-04-24
    • 2014-11-26
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多