run against the instance for a view of server roles and permissions by login
Server Role Membership Validation
Need to know how to verify if a login has server-level access to your SQL Server instance?
2014-06-17
2,701 reads
run against the instance for a view of server roles and permissions by login
/* Script Date 19th February 2010 Script Author Perry Whittle Script Description This script returns all server logins, any Server Roles they hold and server level permissions assigned*/SELECT sp.name AS ServerPrincipal, sp.type_desc AS LoginType, CASE sp.is_disabled WHEN 0 THEN 'No' WHEN 1 THEN 'Yes' END AS UserDisabled, sp.create_date AS DateCreated, sp.modify_date AS DateModified, sp.default_database_name AS DefaultDB, sp.default_language_name AS DefaultLang, ISNULL(STUFF((SELECT ',' + CASE ssp22.name WHEN 'sysadmin' THEN ssp22.name + ' "Danger Will Robinson"' ELSE ssp22.name END FROM sys.server_principals ssp2 INNER JOIN sys.server_role_members ssrm2 ON ssp2.principal_id = ssrm2.member_principal_id INNER JOIN sys.server_principals ssp22 ON ssrm2.role_principal_id = ssp22.principal_id WHERE ssp2.principal_id = sp.principal_id ORDER BY ssp2.name FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N''), 'NoRolesHeld') AS ListofServerRoles, ISNULL(STUFF((SELECT ';' + ' Permission [' + sspm3.permission_name + '] is [' + CASE WHEN sspm3.state_desc = 'GRANT' THEN 'Granted]' WHEN sspm3.state_desc = 'DENY' THEN 'Denied]' END AS PermGrants FROM sys.server_principals ssp3 INNER JOIN sys.server_permissions sspm3 ON ssp3.principal_id = sspm3.grantee_principal_id WHERE sspm3.class = 100 AND sspm3.grantee_principal_id = sp.principal_id FOR XML PATH(N''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 1, N''), 'NoServerPermissions') + ' in Server::' + @@ServerName + '' AS PermGrants FROM sys.server_principals sp WHERE sp.type IN ('S','G','U') AND sp.name NOT LIKE '##%##' ORDER BY ServerPrincipal