请问在SQL server以及Oracle库里,用sql语句判断用户是否为dba,该怎样写?看了不少书,好象没发现,特来请教。

解决方案 »

  1.   

    --oracle:
     
      1.判断当前连接的用户是否是dba
      
        select userenv('isdba') from dual; //TRUE为是dba
        
      2.判断特定用户是否是dba
      
        select decode(username,'SYS','TRUE','SYSTEM','TRUE','FALSE') from dba_users where username ='您要判断的用户名';
        
    --MSSQL
      
      select = case when user_name(uid) = 'dbo' then 'true' else 'false' end from sysusers where status  >0
      

  2.   

    sqlserver : is_srvrolemember('sysadmin')
      

  3.   

    不好意思现在才回阿,前段时间出去了。我刚刚试了下, oracle中的 2.判断特定用户是否是dba的语句总是报“未选定行“,请问这是什么意思?另外sql server 2000的sql 语句怎么判断??
      

  4.   

    if SYSTEM_USER = 'DBA'
    ...
      

  5.   

    Oracle 中的2是需要具有SYSDBA角色登陆进去,才能做判断的.普通用户是没有权限判定自己或是他人是否具有DBA权限的.你肯定进去的时候是用NORMAL角色进去的.SQLServer 如果采用 is_srvrolemember('sysadmin')语句判断的话,是指明当前的用户登录是否是指定的服务器角色的成员.而我那个语句是根据你维护的用户,判断哪些用户具有SA权限,仅此而已.
      

  6.   

    Oracle 中的2是具有SYSDBA角色登陆进去,还总是报“未选定行“;另外,sql server中你那个语句也是判断用户是否是服务器角色中的'sysadmin',而不是判断它是否为数据库管理员。