And Brain said,

MSSQL, sa 관리자 계정 주요 쿼리 정리 본문

IT/Database

MSSQL, sa 관리자 계정 주요 쿼리 정리

The Man 2025. 3. 6. 10:34
반응형

-- 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;
반응형
Comments