SQL Server에서 모든 로그인 계정 조회하기
SQL Server에 생성된 모든 로그인(login) 계정과 관련 정보를 한 번에 확인할 수 있는 쿼리가 있을까요? 답은 예입니다. SQL Server에는 sys.sql_logins라는 가상 카탈로그 뷰(시스템 뷰)가 있으며, 이를 조회하면 서버에 생성된 모든 로그인과 세부 정보를 함께 반환받을 수 있습니다.
전체 로그인 목록 조회 쿼리
SQL Server의 모든 로그인 계정을 조회하려면 다음 쿼리를 실행합니다.
SELECT *
FROM master.sys.sql_logins;
sys.sql_logins 뷰의 주요 컬럼
sys.sql_logins 뷰는 아래와 같은 컬럼들로 구성되어 있습니다.
| 컬럼 | 설명 |
|---|---|
| name | CREATE LOGIN 명령에서 지정한 로그인 이름입니다. |
| principal_id | 보안 주체 ID(숫자 값)입니다. |
| sid | CREATE LOGIN 명령에서 지정한 고유 보안 식별자(SID)입니다. |
| type | 보안 주체 유형 코드입니다. 아래 목록 참고. |
| type_desc | 보안 주체 유형에 대한 설명입니다. 아래 목록 참고. |
| is_disabled | 로그인 비활성화 여부(0 또는 1)입니다. |
| create_date | CREATE LOGIN 명령으로 로그인이 생성된 날짜/시간입니다. |
| modify_date | ALTER LOGIN 명령으로 마지막에 수정된 날짜/시간입니다. |
| default_database_name | CREATE LOGIN 또는 ALTER LOGIN 명령에서 지정한 기본 데이터베이스 이름입니다. |
| default_language_name | 기본 언어 설정입니다. |
| credential_id | 자격 증명(credential) ID입니다. |
| is_policy_checked | 암호 정책 검사 여부(0 또는 1)입니다. |
| is_expiration_checked | 암호 만료 검사 여부(0 또는 1)입니다. |
| password_hash | 로그인 암호의 해시 값입니다. |
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 2000)에서의 호환성
SQL Server 2000과 같은 구버전 환경에서는 시스템 테이블인 sys.syslogins를 사용해 모든 로그인 정보를 확인할 수 있습니다.
SELECT *
FROM master.sys.syslogins;
sys.syslogins 시스템 테이블(SQL Server 2000)은 다음과 같은 컬럼들을 포함합니다.
| 컬럼 | 설명 |
|---|---|
| sid | CREATE LOGIN 명령에서 지정한 고유 값입니다. |
| status | 적용되지 않습니다. |
| createdate | CREATE LOGIN 명령으로 로그인이 생성된 날짜/시간입니다. |
| updatedate | ALTER LOGIN 명령으로 마지막에 수정된 날짜/시간입니다. |
| accdate | 사용되지 않습니다. |
| totcpu | 적용되지 않습니다. |
| totio | 적용되지 않습니다. |
| spacelimit | 적용되지 않습니다. |
| timelimit | 적용되지 않습니다. |
| resultlimit | 적용되지 않습니다. |
| name | CREATE LOGIN 명령에서 지정한 로그인 이름입니다. |
| dbname | 기본 데이터베이스 이름입니다. |
| language | 기본 언어입니다. |
| denylogin | 로그인 거부 여부(0 또는 1)입니다. |
| hasaccess | 서버 접근 권한 여부(0 또는 1)입니다. |
| isntname | Windows 계정 여부(0 또는 1)입니다. |
| isntgroup | Windows 그룹 여부(0 또는 1)입니다. |
| isntuser | Windows 사용자 여부(0 또는 1)입니다. |
| sysadmin | sysadmin 고정 서버 역할 멤버 여부(0 또는 1)입니다. |
| securityadmin | securityadmin 역할 멤버 여부(0 또는 1)입니다. |
| serveradmin | serveradmin 역할 멤버 여부(0 또는 1)입니다. |
| setupadmin | setupadmin 역할 멤버 여부(0 또는 1)입니다. |
| processadmin | processadmin 역할 멤버 여부(0 또는 1)입니다. |
| diskadmin | diskadmin 역할 멤버 여부(0 또는 1)입니다. |
| dbcreator | dbcreator 역할 멤버 여부(0 또는 1)입니다. |
| bulkadmin | bulkadmin 역할 멤버 여부(0 또는 1)입니다. |
| loginname | CREATE LOGIN 명령에서 지정한 로그인 이름입니다. |