locked
tabela de grupos (roles) sqlserver 2012 RRS feed

  • Pergunta

  • Bom Dia

    Alguem já utilizou alguma tabela que liste os grupos (db_accessadmin, db_backupoperator etc...)?

    preciso listar os usuarios e qual grupo pertencem...

    encontrei uma tabela sys.members, contendo as colunas memberuid e groupuid

    relacionei a memberuid com a tabela sys.sysusers.uid, falta relacionar o groupuid porém não encontro a tabela que contem os dados.

    Obrigado.



    • Editado mscampos92 segunda-feira, 29 de julho de 2013 14:39
    segunda-feira, 29 de julho de 2013 14:38

Respostas

  • Campos,

    Veja se este select lhe atende:

    EXECUTE sp_msforeachdb 'select  ''[?]'' as DatabaseName,
                 u.name
                ,case when (r.principal_id is null) then ''public'' else r.name end
                ,l.default_database_name
                ,u.default_schema_name
                ,u.principal_id
        from [?].sys.database_principals u
            left join ([?].sys.database_role_members m join [?].sys.database_principals r on m.role_principal_id = r.principal_id) 
                on m.member_principal_id = u.principal_id
            left join [?].sys.server_principals l on u.sid = l.sid
            where u.type <> ''R'''


    <b>Fabrizzio A. Caputo</b><br/> Certificações:<br/> MCT<br/> MCC<br/> Oracle OCA 11g<br/> MCITP SQL Server 2008 BI<br/> MCITP SQL Server 2008 Implementation and Maintenance<br/> MCITP SQL Server 2008 Developer<br/> ITIL V3 Foundation <br/> Blog Pessoal: <a href="http://fabrizziocaputo.wordpress.com">www.fabrizziocaputo.wordpress.com</a><br/> Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta mscampos92 segunda-feira, 29 de julho de 2013 15:21
    segunda-feira, 29 de julho de 2013 14:55
    Moderador

Todas as Respostas

  • Campos,

    Veja se este select lhe atende:

    EXECUTE sp_msforeachdb 'select  ''[?]'' as DatabaseName,
                 u.name
                ,case when (r.principal_id is null) then ''public'' else r.name end
                ,l.default_database_name
                ,u.default_schema_name
                ,u.principal_id
        from [?].sys.database_principals u
            left join ([?].sys.database_role_members m join [?].sys.database_principals r on m.role_principal_id = r.principal_id) 
                on m.member_principal_id = u.principal_id
            left join [?].sys.server_principals l on u.sid = l.sid
            where u.type <> ''R'''


    <b>Fabrizzio A. Caputo</b><br/> Certificações:<br/> MCT<br/> MCC<br/> Oracle OCA 11g<br/> MCITP SQL Server 2008 BI<br/> MCITP SQL Server 2008 Implementation and Maintenance<br/> MCITP SQL Server 2008 Developer<br/> ITIL V3 Foundation <br/> Blog Pessoal: <a href="http://fabrizziocaputo.wordpress.com">www.fabrizziocaputo.wordpress.com</a><br/> Email: fabrizzio.antoniaci@gmail.com

    • Marcado como Resposta mscampos92 segunda-feira, 29 de julho de 2013 15:21
    segunda-feira, 29 de julho de 2013 14:55
    Moderador
  • Muito Obrigado!!!

    estou tentando entender a lógica, pelo o que vi parece que os dados de todos os db_* ficam nas "principals" da vida...


    segunda-feira, 29 de julho de 2013 15:22