SQL Serverでログイン一覧、ロール一覧を出力する方法
SQL Serverでログインの一覧で出力する方法を紹介します。また、各データベースでのログインと割り当てているロールを一覧で出力する方法も紹介しています。
インスタンスのログイン
SQL Serverインスタンス内のログインを一覧で表示するには、以下のクエリーを実行します。
select sid, name, type_desc, type, is_disabled from sys.server_principals
必要であれば、type_descあるいはtypeをwhereで指定して、出力されるログインを制限します。
各データベースのログインとロール
データベースに設定されているログインとロールを確認するためのクエリーは以下の通りになります。
use DatabaseName
select r.sid, r.name, m.sid, m.name from sys.database_role_members rm
left outer join sys.database_principals r on rm.role_principal_id = r.principal_id
left outer join sys.database_principals m on rm.member_principal_id = m.principal_id
ロールとログインのsidと名前を出力しています。
sidが必要ないなら、名前の出力のみにしてロールの名前とメンバーの名前を項目名にするといいです。
use DatabaseName
select r.name RoleName, m.name MemberName from sys.database_role_members rm
left outer join sys.database_principals r on rm.role_principal_id = r.principal_id
left outer join sys.database_principals m on rm.member_principal_id = m.principal_id
項目名をRoleName、MemberNameにして、どちらの名前かを明確にしています。
各データベースのロールとログインを出力する場合、最初にUseでそのデータベースにコンテキストを変更してからクエリーを実行します。