我想对数据库中的一个库 通过SQL SERVER语句把所有登陆用户的授权情况 全部查出来。以下是我写得SQL 语句。select s.name loginname,u.name userame,r.name rolename,u.default_schema_name 
from sys.database_principals u join sys.server_principals s on u.sid=s.sid join sys.database_role_members m on u.principal_id=m.member_principal_id join sys.database_principals r on m.role_principal_id=r.principal_id 
where u.type= 's'  
此语句还是无法将 安全对像  罗列出来。有没有哪个高手遇到过这样的问题。sql server 2012数据库sql server

解决方案 »

  1.   

    --去掉where条件查询
    select s.name loginname,u.name userame,r.name rolename,u.default_schema_name ,u.type
    from sys.database_principals u join sys.server_principals s on u.sid=s.sid 
    join sys.database_role_members m on u.principal_id=m.member_principal_id 
    join sys.database_principals r on m.role_principal_id=r.principal_id -- where u.type= 's'  --这是我本机查询结果
    /*
    loginname userame rolename default_schema_name type
    DEVELOP01\Administrator dbo db_owner dbo U
    */
      

  2.   

    虽没达到我想要的结果  但你这语句给了我很大的启发  QQQ 
      

  3.   

    楼主加上u.type='s'那就只查系统对象了,忽略了其它对象。楼主是不是受到启发就搞定了啊,现在还有啥疑问吗?
      

  4.   

    不是  我要的就是  只查sql的用户  server 的不要
      

  5.   

    SELECT pr.principal_id, pr.name, pr.type_desc, 
        pr.authentication_type_desc, pe.state_desc, pe.permission_name
    FROM sys.database_principals AS pr
    JOIN sys.database_permissions AS pe
        ON pe.grantee_principal_id = pr.principal_id;
    where sql_user= DBC_O