Technical Article

Script to list all user and roles

,

This script list all the users defined for each database on the server, it give the database name, the login name and the role defined.

Its use full to have quick view of witch users are dbo on witch database

Ensure that you have the result in grid in query analyzer, and just cut and paste the result in an excel file to do some extra manipulation, or just the way you want.

This script can be executed on any database, it does not refer to the current database.
You will need sa privilege, or access to the sysdatabases table in master, and access to each databases.

set nocount on
declare @name sysname,
@SQL  nvarchar(600)

if exists (select [id] from tempdb..sysobjects where [id] = OBJECT_ID ('tempdb..#tmpTable'))
drop table #tmpTable

CREATE TABLE #tmpTable (
[DATABASENAME] sysname NOT NULL ,
[USER_NAME] sysname NOT NULL,
[ROLE_NAME] sysname NOT NULL)

declare c1 cursor for 
select name from master.dbo.sysdatabases

open c1
fetch c1 into @name
while @@fetch_status >= 0
begin
select @SQL = 
'insert into #tmpTable
 select N'''+ @name + ''', a.name, c.name
from ' + QuoteName(@name) + '.dbo.sysusers a 
join ' + QuoteName(@name) + '.dbo.sysmembers b on b.memberuid = a.uid
join ' + QuoteName(@name) + '.dbo.sysusers c on c.uid = b.groupuid
where a.name != ''dbo'''

/* Insert row for each database */execute (@SQL)
fetch c1 into @name
end
close c1
deallocate c1

select * from #tmpTable

Rate

1 (1)

Share

Share

Rate

1 (1)