-- Kueri izin objek pengguna
exec sp_helprotect NULL, 'Nama Pengguna'
-- Kueri peran pengguna
eksekutif sp_helpuser 'Nama Pengguna'
-- Kueri pengguna mana yang memiliki peran sistem tertentu
eksekutif sp_helpsrvrolemember 'sysadmin'
-- Peran berlapis dapat dikueri
DENGAN tree_roles sebagai
(
PILIH role_principal_id, member_principal_id
DARI sys.database_role_members
WHERE member_principal_id = USER_ID('UserName')
SERIKAT SEMUA
PILIH c.role_principal_id,c.member_principal_id
DARI sys.database_role_members sebagai c
bergabung batin tree_roles
pada tree_roles.member_principal_id = c.role_principal_id
)
PILIH RoleName USER_NAME(role_principal_id) yang berbeda
DARI tree_roles
-- Tabel dasar yang terkait dengan izin lain
Pilih * dari SysUsers
Pilih * dari SysPermissions
-- Siapa yang memiliki akses ke instans SQL Server saya?
PILIH
name sebagai UserName, type_desc sebagai UserType, is_disabled sebagai IsDisabled
DARI sys.server_principals
di mana type_desc di('WINDOWS_LOGIN', 'SQL_LOGIN')
urutkan berdasarkan UserType, name, IsDisabled
-- Siapa yang memiliki akses ke Database saya?
PILIH
dp.name sebagai UserName, dp.type_desc sebagai UserType, sp.name sebagai LoginName, sp.type_desc sebagai LoginType
DARI sys.database_principals dp
GABUNG sys.server_principals SP ON dp.principal_id = sp.principal_id
urutkan berdasarkan UserType
Pilih * dari sys.database_principals
-- Peran Server
pilih
p.name sebagai UserName, p.type_desc sebagai UserType, pp.name sebagai ServerRoleName, pp.type_desc sebagai ServerRoleType
dari peran sys.server_role_members
bergabung sys.server_principals p pada roles.member_principal_id = p.principal_id
Gabung dengan sys.server_principals pp di roles.role_principal_id = pp.principal_id
tempat pp.name di('sysadmin')
urutkan berdasarkan ServerRoleName, UserName
-- Peran Database
PILIH
p.name sebagai UserName, p.type_desc sebagai UserType, pp.name sebagai DBRoleName, pp.type_desc sebagai DBRoleType, pp.is_fixed_role sebagai IfFixedRole
DARI peran sys.database_role_members
GABUNG sys.database_principals p ON roles.member_principal_id = p.principal_id
GABUNG sys.database_principals pp PADA roles.role_principal_id = pp.principal_id
di mana pp.name di('db_owner', 'db_datawriter')
-- Apa yang dapat dilakukan pengguna ini?
PILIH
grantor.name sebagai GrantorName, dp.state_desc sebagai StateDesc, dp.class_desc sebagai ClassDesc, dp.permission_name sebagai PermissionName ,
OBJECT_NAME(major_id) sebagai ObjectName, GranteeName = grantee.name
DARI sys.database_permissions dp
BERGABUNG sys.database_principals penerima hibah di dp.grantee_principal_id = grantee.principal_id
BERGABUNG sys.database_principals pemberi hibah pada dp.grantor_principal_id = grantor.principal_id
di mana permission_name seperti '%UPDATE%'