And Brain said,
MSSQL, sa 관리자 계정 주요 쿼리 정리 본문
반응형

-- sa` 계정은 MSSQL의 최고 관리자 계정으로, 모든 데이터베이스 및 서버 설정을 관리할 수 있음.
-- 여기서는 `sa` 계정과 관련된 활성화, 비밀번호 변경, 권한 관리 등 핵심 명령어를 정리.
-- 1. `sa` 계정 상태 확인
SELECT name, is_disabled FROM sys.sql_logins WHERE name = 'sa';
`is_disabled = 0` → 활성화됨
`is_disabled = 1` → 비활성화됨
-- 2. `sa` 계정 활성화
ALTER LOGIN sa ENABLE;
-- 3. `sa` 계정 비활성화 (보안 강화 시 사용)
ALTER LOGIN sa DISABLE;
-- 4. `sa` 계정 비밀번호 변경
ALTER LOGIN sa WITH PASSWORD = 'NewStrongPassword123!';
-- 5. 현재 로그인한 사용자의 역할 확인
SELECT SUSER_NAME();
SELECT IS_SRVROLEMEMBER('sysadmin'); -- 1이면 관리자(sysadmin) 권한 보유
-- 6. `sa` 계정이 `sysadmin` 역할을 가지고 있는지 확인
SELECT name, type_desc, is_disabled
FROM sys.server_principals
WHERE type = 'S' AND name = 'sa';
-- 7. MSSQL 인증 모드 확인 (Windows 인증 or 혼합 모드)
EXEC xp_instance_regread @rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'Software\Microsoft\MSSQLServer\MSSQLServer',
@value_name = 'LoginMode';
결과 값: 1 = Windows 인증, 2 = SQL Server 및 Windows 인증 (혼합 모드)
-- 8. MSSQL 인증 모드 변경 (Windows 인증 → 혼합 모드로 변경 필요 시)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'authentication mode', 2; -- 2 = 혼합 모드 (Mixed Mode)
RECONFIGURE;
-- 적용 후 MSSQL 서버를 재시작해야 변경됨.
-- 9. 현재 로그인한 사용자의 권한 확인
SELECT * FROM sys.fn_my_permissions(NULL, 'SERVER');
-- 10. MSSQL 서버에서 현재 실행 중인 프로세스 확인
SELECT * FROM sys.dm_exec_requests;
-- 11. MSSQL 서버 강제 종료
SHUTDOWN WITH NOWAIT;
-- 12. 모든 연결 강제 종료 후 데이터베이스 복구
ALTER DATABASE MyDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE MyDatabase FROM DISK = 'C:\backups\MyDatabase.bak' WITH REPLACE;
ALTER DATABASE MyDatabase SET MULTI_USER;
-- 13. 모든 사용자 강제 로그아웃
ALTER DATABASE MyDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 14. 특정 사용자의 세션 종료
KILL <Session_ID>; -- 세션 ID 확인 후 실행
SELECT session_id, login_name FROM sys.dm_exec_sessions;
-- 15. MSSQL 서버 백업
BACKUP DATABASE MyDatabase TO DISK = 'C:\backups\MyDatabase.bak' WITH FORMAT, INIT;
-- 16. MSSQL 서버 복구
RESTORE DATABASE MyDatabase FROM DISK = 'C:\backups\MyDatabase.bak' WITH REPLACE;
-- 17. `sa` 계정이 모든 권한을 가지고 있는지 확인
SELECT * FROM sys.server_permissions WHERE grantee_principal_id = SUSER_ID('sa');
-- 18. `sa` 계정으로 로그인 기록 확인
SELECT login_time, host_name, program_name FROM sys.dm_exec_sessions WHERE login_name = 'sa';
-- 19. `sa` 계정의 권한 변경 (최고 권한 부여 - 기본적으로 설정됨)
ALTER SERVER ROLE sysadmin ADD MEMBER sa;
-- 20. `sa` 계정이 특정 데이터베이스의 모든 권한을 가지고 있는지 확인
SELECT * FROM sys.database_permissions WHERE grantee_principal_id = DATABASE_PRINCIPAL_ID('sa');
-- 21. 특정 데이터베이스에서 `sa` 계정으로 실행할 수 있는 권한 목록 조회
SELECT * FROM fn_my_permissions(NULL, 'DATABASE');
-- 22. MSSQL 서버 전체 로그 확인
EXEC xp_readerrorlog;
-- 23. MSSQL 서비스 재시작 (`sa` 권한 필요, 실행하려면 cmd 또는 PowerShell 사용)
-- cmd에서 실행
NET STOP MSSQLSERVER && NET START MSSQLSERVER
-- 24. MSSQL 서버 버전 확인
SELECT @@VERSION;
-- 25. 현재 MSSQL 인스턴스 정보 확인
SELECT * FROM sys.dm_server_services;
-- 26. `sa` 계정 사용 로그 조회 (보안 로그 분석 시 필요)
SELECT * FROM sys.dm_exec_sessions WHERE login_name = 'sa';
-- 27. `sa` 계정으로 실행된 최근 쿼리 확인
SELECT st.text, r.start_time, r.status
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st
WHERE r.session_id = @@SPID;
-- 28. `sa` 계정을 포함한 모든 로그인 정보 조회
SELECT * FROM sys.sql_logins;
반응형
'IT > Database' 카테고리의 다른 글
DB Partitioning, 거대한 데이터를 지탱하기 위한 DB의 슬래브 구조 (0) | 2025.03.14 |
---|---|
AWR (Automatic Workload Repository), 오라클 DB의 진술문 (0) | 2025.03.13 |
MSSQL, 주요 쿼리 정리 (0) | 2025.03.05 |
MySQL Replication, DB must go on (0) | 2023.09.18 |
MongoDB, NoSQL의 거대한 수장 (Version 6.0) | 설치 및 외부접속 허용 (0) | 2023.08.07 |