Lista alla användare i alla databaser


Tag : Användare

DECLARE @DB_USers TABLE 
  ( 
     dbname         SYSNAME, 
     username       SYSNAME, 
     logintype      SYSNAME, 
     associatedrole VARCHAR(max), 
     create_date    DATETIME, 
     modify_date    DATETIME 
  ) 

INSERT @DB_USers EXEC Sp_msforeachdb ' use [?] SELECT ''?'' AS DB_Name, case prin.name when ''dbo'' then prin.name + '' (''+ (select SUSER_SNAME(owner_sid) from master.sys.databases where name =''?'') + '')'' else prin.name end AS UserName, prin.type_desc AS LoginType, isnull(USER_NAME(mem.role_principal_id),'''') AS AssociatedRole ,create_date,modify_date FROM sys.database_principals prin LEFT OUTER JOIN sys.database_role_members mem ON prin.principal_id=mem.member_principal_id WHERE prin.sid IS NOT NULL and prin.sid NOT IN (0x00) and prin.is_fixed_role <> 1 AND prin.name NOT LIKE ''##%'''

SELECT dbname, username, logintype, create_date, modify_date, Stuff((SELECT ',' + CONVERT(VARCHAR(500), associatedrole) FROM @DB_USers user2 WHERE user1.dbname = user2.dbname AND user1.username = user2.username FOR xml path('')), 1, 1, '') AS Permissions_user FROM @DB_USers user1 GROUP BY dbname, username, logintype, create_date, modify_date ORDER BY dbname, username

About

Det här är min digitala anteckningsbok för allt som har med databaser, automatisering och teknik att göra.
Här samlar jag alla de där skripten, lösningarna och knepen jag byggt på mig under åren – främst inom SQL Server och PowerShell.
Istället för att de ska ligga och damma i en glömd mapp delar jag med mig av dem här, så att både jag själv (när minnet sviker) och du förhoppningsvis kan spara några timmars klickande.