SQL Server에서 생성된 모든 사용자 조회하기
SQL Server에서 간단한 쿼리만으로 데이터베이스에 생성된 모든 사용자(User)를 한 번에 확인할 수 있을까요? 답은 '예'입니다. SQL Server에는 sys.database_principals라는 시스템 카탈로그 뷰가 제공되며, 이를 조회하면 데이터베이스에 생성된 모든 사용자와 관련 상세 정보를 손쉽게 확인할 수 있습니다.
전체 사용자 조회 쿼리
SQL Server의 모든 사용자를 조회하려면 아래 쿼리를 실행하면 됩니다.
SELECT *
FROM master.sys.database_principals;
sys.database_principals 주요 컬럼 살펴보기
sys.database_principals 시스템 뷰는 다음과 같은 컬럼들로 구성되어 있습니다.
| 컬럼명 | 설명 |
|---|---|
| name | CREATE USER 명령으로 생성된 사용자 이름 |
| principal_id | 보안 주체(Principal) ID (숫자 값) |
| type | 보안 주체 유형 코드 |
| type_desc | 보안 주체 유형에 대한 설명 |
| default_schema_name | 스키마가 별도로 지정되지 않았을 때 사용되는 기본 스키마 이름 |
| create_date | CREATE USER 명령으로 사용자가 생성된 날짜/시간 |
| modify_date | 사용자 정보가 마지막으로 수정된 날짜/시간 |
| owning_principal_id | 해당 사용자를 소유한 보안 주체의 ID |
| sid | CREATE LOGIN 명령에서 지정한 SID 값 |
| is_fixed_role | 고정 역할 여부 (0 또는 1) |
| authentication_type | NONE, WINDOWS, INSTANCE 중 하나 |
| default_language_name | 기본 언어 이름 |
| default_language_lcid | 기본 언어 LCID |
보안 주체(Principal) 유형 코드
type 컬럼에 표시되는 보안 주체 유형 코드는 다음과 같습니다.
- S = SQL Server 사용자
- U = Windows 사용자
- G = Windows 그룹
- A = 응용 프로그램 역할(Application Role)
- R = 데이터베이스 역할(Database Role)
- C = 인증서(Certificate)에 매핑된 사용자
- K = 비대칭 키(Asymmetric Key)에 매핑된 사용자
type_desc 컬럼에 표시되는 유형 설명은 다음과 같습니다.
- SQL_USER
- WINDOWS_USER
- WINDOWS_GROUP
- APPLICATION_ROLE
- DATABASE_ROLE
- CERTIFICATE_MAPPED_USER
- ASYMMETRIC_KEY_MAPPED_USER
구버전 SQL Server에서 사용자 조회하기
SQL Server 2000과 같은 구버전 환경에서는 sys.sysusers 시스템 테이블을 사용하여 모든 사용자를 조회할 수 있습니다. 실행 명령은 다음과 같습니다.
SELECT *
FROM master.sys.sysusers;
sys.sysusers 주요 컬럼 살펴보기
| 컬럼명 | 설명 |
|---|---|
| uid | 사용자 ID (고유 숫자 값) |
| status | 해당 없음 |
| name | CREATE USER 명령으로 생성된 사용자 이름 |
| sid | CREATE LOGIN 명령에서 지정한 SID 값 |
| roles | 생성되지 않음 |
| createdate | CREATE USER 명령으로 사용자가 생성된 날짜/시간 |
| updatedate | 사용자 정보가 수정된 날짜/시간 |
| altuid | 해당 없음 |
| password | 해당 없음 |
| gid | 사용자에게 할당된 그룹 ID |
| environ | 해당 없음 |
| hasdbaccess | 데이터베이스 접근 권한 여부 (0 또는 1) |
| islogin | 로그인 계정 여부 (0 또는 1) |
| isntname | Windows 계정 이름 여부 (0 또는 1) |
| isntgroup | Windows 그룹 여부 (0 또는 1) |
| isntuser | Windows 사용자 여부 (0 또는 1) |
| issqluser | SQL Server 사용자 여부 (0 또는 1) |
| isaliased | 별칭(Alias) 여부 (0 또는 1) |
| issqlrole | SQL Server 역할 여부 (0 또는 1) |
| isapprole | 응용 프로그램 역할 여부 (0 또는 1) |
함께 참고하면 좋은 글
- SQL Server에서 로그인(Login) 찾기
- SQL Server의 CREATE USER 명령 사용법