-- Interoghează permisiunile de obiect ale utilizatorului
exec sp_helprotect NULL, 'NumeUtilizator'
-- Interoghează rolul utilizatorului
exec sp_helpuser 'UserName'
-- Interoghează care utilizatori au un rol de sistem specificat
EXEC sp_helpsrvrolemember 'sysadmin'
-- Rolurile imbricate pot fi interogate
CU tree_roles
(
SELECTEAZĂ role_principal_id, member_principal_id
DE sys.database_role_members
UNDE member_principal_id = USER_ID('NumeUtilizator')
UNION ALL
SELECTEAZĂ c.role_principal_id.c.member_principal_id
DIN sys.database_role_members ca c
Îmbinarea interioară tree_roles
pe tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) Nume-rol
DE tree_roles
-- Tabel de bază legat de alte permisiuni
selectează * din sysusers
select * din syspermissions
-- Cine are acces la instanța mea SQL Server?
ALEGE
nume ca NumeUtilizator, type_desc ca TypeUtilizator is_disabled ca IsDisabled
DE sys.server_principals
unde type_desc în('WINDOWS_LOGIN', 'SQL_LOGIN')
ordine după UserType, nume, IsDisabled
-- Cine are acces la bazele mele de date?
ALEGE
dp.name ca NumeUtilizator, dp.type_desc ca TypeUtilizator, sp.name ca NumeLogin, sp.type_desc ca LoginType
DE sys.database_principals DP
JOIN sys.server_principals sp PE dp.principal_id = sp.principal_id
Ordină după UserType
selectează * din sys.database_principals
-- Roluri de server
alege
p.name ca NumeUtilizator, p.type_desc ca TipUtilizator, pp.name ca NumeRolServer, pp.type_desc ca RolRolServerTip
Din sys.server_role_members roluri
join sys.server_principals p pe roles.member_principal_id = p.principal_id
Join sys.server_principals pp pe roles.role_principal_id = pp.principal_id
unde pp.name în('sysadmin')
Ordine după NumeRolServer, Nume de Utilizator
-- Roluri în baza de date
ALEGE
p.name ca UserName, p.type_desc ca UserType, pp.name ca DBRoleName, pp.type_desc ca DBRoleType, pp.is_fixed_role ca IfFixedRole
DIN sys.database_role_members roluri
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
unde pp.name în('db_owner', 'db_datawriter')
-- Ce pot face acești utilizatori?
ALEGE
grantor.name ca GrantName, dp.state_desc ca StateDesc, dp.class_desc ca ClassDesc dp.permission_name ca PermissionName ,
OBJECT_NAME(major_id) ca NumeObiect, NumeBeneficiar = grantee.name
DE sys.database_permissions DP
ALĂTURĂ-sys.database_principals beneficiar pe dp.grantee_principal_id = grantee.principal_id
ALĂTURĂ-sys.database_principals fondator pe dp.grantor_principal_id = grantor.principal_id
unde permission_name de genul '%UPDATE%'