-- Dotazovať sa na oprávnenia používateľa na objekty
exec sp_helprotect NULL, 'UserName'
-- Dotaz na rolu používateľa
exec sp_helpuser 'UserName'
-- Dotaz, ktorí používatelia majú určenú systémovú rolu
Výkonný sp_helpsrvrolemember 'sysadmin'
-- Vnorené roly môžu byť dotazované
S tree_roles ako
(
VYBERTE role_principal_id, member_principal_id
OD sys.database_role_members
KDE member_principal_id = USER_ID('Username')
UNION ALL
VYBERTE c.role_principal_id,c.member_principal_id
FROM sys.database_role_members ako c
Vnútorný spoj tree_roles
on tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
OD tree_roles
-- Základná tabuľka týkajúca sa iných oprávnení
Vybrať * zo systémov
Vybrať * zo syspermissions
-- Kto má prístup k mojej SQL Server inštancii?
VYBRAŤ
name ako UserName, type_desc ako UserType is_disabled ako IsDisabled
OD sys.server_principals
kde type_desc v ('WINDOWS_LOGIN', 'SQL_LOGIN')
order by UserType, name, IsDisabled
-- Kto má prístup k mojim databázam?
VYBRAŤ
dp.name ako UserName, dp.type_desc ako UserType, sp.name ako LoginName, sp.type_desc ako LoginType
Z sys.database_principals dp
JOIN sys.server_principals SP ON dp.principal_id = sp.principal_id
poradie podľa UserType
Vyberte * z sys.database_principals
-- Roly servera
vybrať
p.name ako UserName, p.type_desc ako UserType, pp.name ako ServerRoleName pp.type_desc ako ServerRoleType
Z sys.server_role_members úloh
join sys.server_principals p na roles.member_principal_id = p.principal_id
pripojte sa sys.server_principals pp na roles.role_principal_id = pp.principal_id
kde pp.name v ('sysadmin')
poradie podľa ServerRoleName, UserName
-- Databázové úlohy
VYBRAŤ
p.name ako UserName, p.type_desc ako UserType, pp.name ako DBRoleName, pp.type_desc ako DBRoleType pp.is_fixed_role ako IfFixedRole
FROM sys.database_role_members úlohy
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
JOIN sys.database_principals pp ON roles.role_principal_id = pp.principal_id
kde pp.name v ('db_owner', 'db_datawriter')
-- Čo môžu títo používatelia urobiť?
VYBRAŤ
grantor.name ako GrantorName, dp.state_desc ako StateDesc, dp.class_desc ako ClassDesc, dp.permission_name ako PermissionName,
OBJECT_NAME(major_id) ako ObjectName, GranteeName = grantee.name
Z sys.database_permissions dp
JOIN sys.database_principals príjemca grantu na dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor na dp.grantor_principal_id = grantor.principal_id
kde permission_name napríklad '%UPDATE%'