sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2005 で、すべてのログイン、そのサーバー ロール、対応するすべての db のユーザー、db ロールを一覧表示するクエリを作成するにはどうすればよいですか?

    リストは動的であるため、1 つのクエリですべてのデータベースをリストすることはできません。あなたの最善の策は、 sp_msforeachdb バッチで結果を構築し、それを返します:

    set nocount on;
    create table  #result (sid varbinary(85), 
     server_principal_id int,
     database_id int,
     database_principal_id int);
    
    exec ms_foreachdb 'insert into #result 
      (server_principal_id, database_id, database_principal_id)
    select s.principal_id, 
      db_id(''?''),
      d.principal_id
    from sys.server_principals s
    join [?].sys.database_principals d
      on s.sid = d.sid;';
    
    select * from #result;
    

    すべての情報を 1 つのテーブルに集約するための適切な結果セットの形を見つけたら、これを拡張してサーバー ロールとデータベース ロールのメンバーシップを含めることができます。



    1. MySQLは多対多の場所を選択します

    2. *すべて*の一致するカテゴリを持つアイテムを見つける方法

    3. すべてのタグに一致する複数のタグ(多対多の関係)のMysql結合クエリ?

    4. RowMapperを実装するクラスでのSpringマネージドBeanインジェクション