如何检查 Sybase 中是不是存在角色

Posted

技术标签:

【中文标题】如何检查 Sybase 中是不是存在角色【英文标题】:How to check if a role exists in Sybase如何检查 Sybase 中是否存在角色 【发布时间】:2011-05-05 03:43:53 【问题描述】:

任何人都知道如何检查 Sybase 数据库中是否已存在角色...我知道角色的名称

有一个 sysroles 表,但没有 name 列!

select * from sysroles

【问题讨论】:

【参考方案1】:

查看proc_role("role_name")(现已折旧为 has_role)或role_id("role_name")。

【讨论】:

【参考方案2】:

    SELECT HAS_ROLE("role_name", 1) 告诉您执行代码段的用户是否具有角色,而不是角色是否存在。当然,您必须了解数据库上下文。

    如果你要使用sys表,你需要看一下doco(PDF,不是在线的,可以下载),表图(显示关系),并习惯它们。表格几乎完全标准化。

sysroles 存在于每个用户数据库中,它在 db 中每个角色包含一行。它不需要“role_name”。 master..sys-s-rvroles 在服务器中每个角色包含一行;你会在那里找到角色名称。

    -- Check if role exists in server
    SELECT [RolesInSvr] = svr.name
        FROM  master..sys-s-rvroles svr
        WHERE name = "role_name"  
    -- Check if role exists in db
    SELECT [RolesInDb] = svr.name
        FROM  master..sys-s-rvroles svr,
              sysroles            db
        WHERE svr.srid = db.id
        AND   svr.name = "role_name"  
    -- List roles in db
    SELECT [RolesInDb] = svr.name,
               [Locked]    = CASE svr.status & 2 
                    WHEN 2 THEN "Locked" 
                    ELSE         CHAR(0)
                    END
               [Expired]   = CASE svr.status & 4 
                    WHEN 4 THEN "Expired" 
                    ELSE         CHAR(0)
                    END
            FROM  master..sys-s-rvroles svr,
                  sysroles            db
            WHERE svr.srid = db.id

【讨论】:

以上是关于如何检查 Sybase 中是不是存在角色的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 quick.db 中是不是存在特定的东西?

如何检查用户是不是在不和谐中扮演角色

在Angular中->如何使用基于角色的访问权限检查用户是不是具有权限,并将角色保存在数据库中

如何检查未登录用户是不是有角色?

如何检查用户是不是在 Meteor 中具有特定角色

检查用户是不是有角色 - 解析云代码