-- Запитване за правата на обектите на потребителя
exec sp_helprotect NULL, 'UserName'
-- Запитване към ролята на потребителя
exec sp_helpuser 'UserName'
-- Запитване кои потребители имат определена системна роля
Exec sp_helpsrvrolemember 'sysadmin'
-- Вложените роли могат да се заявяват
С tree_roles като
(
ИЗБЕРЕТЕ role_principal_id, member_principal_id
ОТ sys.database_role_members
КЪДЕТО member_principal_id = USER_ID('Потребителско име')
СЪЮЗ ВСИЧКИ
ИЗБЕРЕТЕ c.role_principal_id,c.member_principal_id
ОТ sys.database_role_members като c
Вътрешни се свързват tree_roles
on tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
ОТ tree_roles
-- Основна таблица, свързана с други права
изберете * от системни потребители
select * от syspermissions
-- Кой има достъп до моя SQL Server инстанс?
ОТБРАН
име като потребителско име, type_desc като UserType, is_disabled като IsDisabled
ОТ sys.server_principals
където type_desc в ('WINDOWS_LOGIN', 'SQL_LOGIN')
ред по потребителски тип, име, IsDisDisabled
-- Кой има достъп до моите бази данни?
ОТБРАН
dp.name като потребителско име, dp.type_desc като потребителски тип, sp.name като LoginName, sp.type_desc като LoginType
ОТ sys.database_principals DP
JOIN sys.server_principals sp ON dp.principal_id = sp.principal_id
Ред по потребителски тип
изберете * от sys.database_principals
-- сървърни роли
отбран
p.name като UserName, p.type_desc като UserType, pp.name като ServerRoleName pp.type_desc като ServerRoleType
От sys.server_role_members роли
Присъединете sys.server_principals p на roles.member_principal_id = p.principal_id
Присъединете sys.server_principals PP на roles.role_principal_id = pp.principal_id
Къде pp.name в ('sysadmin')
ред по ServerRoleName, потребителско име
-- Роли в база данни
ОТБРАН
p.name като UserName, p.type_desc като UserType, pp.name като DBRoleName, pp.type_desc като DBRoleType, pp.is_fixed_role като IfFixedRole
ОТ sys.database_role_members роли
JOIN sys.database_principals p ON roles.member_principal_id = p.principal_id
JOIN sys.database_principals pp НА roles.role_principal_id = pp.principal_id
къде pp.name в ('db_owner', 'db_datawriter')
-- Какво могат да правят тези потребители?
ОТБРАН
grantor.name като GrantorName, dp.state_desc като StateDesc, dp.class_desc като ClassDesc, dp.permission_name като PermissionName,
OBJECT_NAME(major_id) като ObjectName, GranteeName = grantee.name
ОТ sys.database_permissions DP
ПРИСЪЕДИНИ sys.database_principals грантополучател на dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor на dp.grantor_principal_id = grantor.principal_id
където permission_name като '%UPDATE%'