-- 사용자의 객체 권한 조회
exec sp_helprotect NULL, 'UserName'
-- 사용자의 역할 조회
exec sp_helpuser 'UserName'
-- 지정된 시스템 역할을 가진 사용자를 조회
'sysadmin' sp_helpsrvrolemember 임원
-- 중첩된 역할은 쿼리할 수 있습니다
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
tree_roles.member_principal_id = c.role_principal_id
)
SELECT distinct USER_NAME(role_principal_id) RoleName
tree_roles
-- 다른 권한과 관련된 기본 테이블
시스템 사용자로부터 * 선택
syspermissions 중에서 * 선택을
-- 누가 내 SQL Server 인스턴스에 접근할 수 있나요?
고르다
name은 UserName으로, type_desc는 UserType으로, is_disabled는 IsDisabled로
sys.server_principals에서
여기서 type_desc ('WINDOWS_LOGIN', 'SQL_LOGIN')
사용자 유형, 이름, IsDisabled에 따른 순서
-- 내 데이터베이스에 접근할 수 있는 사람은 누구야?
고르다
dp.name UserName으로, dp.type_desc UserType으로, sp.name LoginName으로, sp.type_desc LoginType으로서
sys.database_principals DP로부터요
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 역할에서
roles.member_principal_id sys.server_principals p = p.principal_id에 합치한다
roles.role_principal_id sys.server_principals pp = pp.principal_id에 합류하세요
여기서 pp.name in('sysadmin')
ServerRoleName, UserName으로 정렬
-- 데이터베이스 역할
고르다
p.name UserName으로, p.type_desc UserType으로, pp.name DBRoleName, pp.type_desc DBRoleType, pp.is_fixed_role IfFixedRole로
sys.database_role_members 역할에서
roles.member_principal_id에 sys.database_principals p를 조인한다 = p.principal_id
roles.role_principal_id sys.database_principals pp 참여 = 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로부터
dp.grantee_principal_id sys.database_principals 수혜자 가입 = grantee.principal_id
dp.grantor_principal_id sys.database_principals 부여자 가입 = grantor.principal_id
여기서 permission_name '%UPDATE%' 같은 곳이죠