Maybe something like this?create table #db (id int identity(0,1), name sysname)insert #db (name)select namefrom master..sysdatabases--where sid <> 0x01create table #logins (name sysname, sid varbinary(85))insert #logins (name, sid)select name, sidfrom master..sysloginswhere sid <> 0x01create table #users (dbname sysname null, loginsid varbinary(85), username sysname)declare @id int, @sql varchar(1000), @dbname sysnameselect @id = max(id)from #dbwhile @id >= 0 begin select @dbname = name from #db where id = @id select @sql = 'insert #users (loginsid, username) select sid, name from ' + quotename(@dbname) + '..sysusers where sid is not null' exec (@sql) update #users set dbname = @dbname where dbname is null select @id = @id - 1 enddrop table #db-- Logins that are connected to a databaseselect #users.dbname 'Database name', #logins.name 'Login name'from #usersinner join #logins on #logins.sid = #users.loginsid-- Logins that are not connected to a databaseselect #logins.name 'Login name'from #loginsleft join #users on #users.loginsid = #logins.sidwhere #users.loginsid is null-- Users for a database that not have a loginselect #users.dbname 'Database name', #users.username 'User name'from #usersleft join #logins on #logins.sid = #users.loginsidwhere #logins.sid is nulldrop table #loginsdrop table #users
Peter LarssonHelsingborg, Sweden