以下のコードを使用して、うまく機能するデータベースの孤立したユーザーのリストを取得しています。私は今、データベースのリストを繰り返し処理し、結果を単一のテーブルに返すものにこれを構築しようとしています。
孤立したユーザーを取得するために使用しているコードは次のとおりです。
select DB_NAME() AS [Current Database], u.uid, u.name, u.sid, rm.role_principal_id as 'Role ID', dp1.name as 'Role'
from sys.sysusers u
left join sys.syslogins l on UPPER(u.sid) = UPPER(l.sid)
inner join sys.database_role_members rm on rm.member_principal_id = u.uid
left join sys.database_principals dp on dp.principal_id = rm.member_principal_id
left join sys.database_principals dp1 on dp1.principal_id = rm.role_principal_id
where u.uid > 4 and u.issqlrole = 0
--and issqluser = 1 --commented out to include orphaned windows logins
and l.name is null
order by 1
以下を使用してデータベースのリストを取得できますが、上記と組み合わせて各データベースを順番に調べたいと思います。
SELECT name FROM sys.databases
WHERE database_id > 4
これに関するヘルプやポインタは大歓迎です!
ありがとう :-)