-- Consultar as permissões de objeto do usuário
exec sp_helprotect NULL, 'UserName'
-- Consultar o papel do usuário
exec sp_helpuser 'Nome de Usuário'
-- Consultar quais usuários têm um papel específico no sistema
Executivo sp_helpsrvrolemember 'sysadmin'
-- Papéis aninhados podem ser consultados
COM tree_roles
(
SELECIONE role_principal_id, member_principal_id
DE sys.database_role_members
ONDE member_principal_id = USER_ID('Nome de Usuário')
UNION ALL
SELECIONE c.role_principal_id.c.member_principal_id
DE sys.database_role_members como c
Junção interna tree_roles
em tree_roles.membro_principal_id = c.role_principal_id
)
SELECT distinto USER_NAME(role_principal_id) Nome do Papel
DE tree_roles
-- Tabela básica relacionada a outras permissões
selecione * dos sysusers
select * a partir de syspermissions
-- Quem tem acesso à minha instância do SQL Server?
SELECIONAR
nome como Nome de Usuário, type_desc como Tipo de Usuário is_disabled como IsDisabled
DE sys.server_principals
onde type_desc em('WINDOWS_LOGIN', 'SQL_LOGIN')
ordem por UserType, nome, IsDisabled
-- Quem tem acesso aos meus bancos de dados?
SELECIONAR
dp.name como Nome de Usuário, dp.type_desc como Tipo de Usuário, sp.name como Nome de Login, sp.type_desc como LoginType
DE sys.database_principals DP
JOIN sys.server_principals sp EM dp.principal_id = sp.principal_id
ordem por UserType
selecione * de sys.database_principals
-- Funções de Servidor
selecionar
p.name como Nome de Usuário, p.type_desc como Tipo de Usuário, pp.name como NomePapelDeServidor pp.type_desc como PapelDeServidor
De sys.server_role_members papéis
junte-se sys.server_principals p em roles.member_principal_id = p.principal_id
junte-se sys.server_principals pp em roles.role_principal_id = pp.principal_id
onde pp.name em('sysadmin')
ordem por NomePapelDeServidor, Nome de Usuário
-- Funções em Banco de Dados
SELECIONAR
p.name como Nome de Usuário, p.type_desc como Tipo de Usuário, pp.name como Nome DBRole, pp.type_desc como DBRoleType, pp.is_fixed_role como IfFixedRole
DE sys.database_role_members FUNÇÕES
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
onde pp.name em('db_owner', 'db_datawriter')
-- O que esses usuários podem fazer?
SELECIONAR
grantor.name como NomeConcedente, dp.state_desc como StateDesc, dp.class_desc como ClassDesc dp.permission_name como PermissionName ,
OBJECT_NAME(major_id) como NomeDeObjeto, NomeBeneficiário = grantee.name
DE sys.database_permissions DP
JUNTE-sys.database_principals beneficiário em dp.grantee_principal_id = grantee.principal_id
JUNTE-sys.database_principals instituidor em dp.grantor_principal_id = grantor.principal_id
onde permission_name como '%ATUALIZAÇÃO%'