tsql - Gather output of sp_helpuser for all databases of a SQL Server instance at once -


currently, sp_helpuser has executed each database of sql server instance separately.

does have script give sp_helpuser output databases @ once?

you can achieve below. not sure sql server 2012 works in sql server 2008 r2. mentioning cause sp_msforeachdb undocumented sp , not guaranteed work in future release.

sp_msforeachdb 'use [?] print ''?''; exec sp_helpuser;'; 

edit:

see below post exact code samples. looking or trying achieve. tsql: audit user roles databases

edit1: complete code post have mentioned. have tried myself in sql2008r2 , warks charm.

if object_id('tempdb..#user_table') not null begin     drop table #user_table; end;  -- tmp table hold user data create table #user_table (     servername nvarchar(100) null,     [database] nvarchar(256) null,     username nvarchar(128) not null,     groupname nvarchar(128) null,     loginname nvarchar(128) null,     defdbname nvarchar(256) null,     defschemaname nvarchar(100) null,     userid integer not null,     [sid] uniqueidentifier null );      declare @sql nvarchar(max); set @sql = '      declare @name sysname,             @sql_string nvarchar(max);      -- cursor containing users current database context     declare usr_name cursor read_only select [name]                                           sysusers                                           hasdbaccess = 1                                           , [name] not ''#%''                                           , [name] not in (''guest'');      open usr_name;     fetch next usr_name @name;      while (@@fetch_status = 0) -- loop processes each database     begin          -- if it''s windows login surround square brackets         if (@name ''%\%'')         begin             set @name = ''['' + @name + '']'';         end          set @sql_string = n''exec sp_helpuser '' + @name;          insert #user_table         (             username,             groupname,             loginname,             defdbname,             defschemaname,             userid,             [sid]         )         exec(@sql_string);           -- add server & database name dataset         update #user_table         set servername = @@servername,         [database] = db_name()         servername null         , [database] null;          -- next database user         fetch next usr_name @name; -- next user      end      -- clean     close usr_name;     deallocate usr_name;';  -- add use database statement change db context set @sql = 'use ?; ' + @sql; -- execute string each database exec sp_msforeachdb @sql;   select * #user_table order loginname, [database]; 

Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -