[sql] SQL 데이터베이스에서 로그인한 사용자의 접속 기록 확인 방법
SQL 데이터베이스에서 로그인한 사용자의 접속 기록을 확인하는 방법을 알아보겠습니다.
1. sys.dm_exec_sessions
뷰 사용하기
SQL Server에서는 sys.dm_exec_sessions
뷰를 사용하여 현재 세션 정보를 확인할 수 있습니다. 이를 이용하여 로그인한 사용자의 접속 정보를 확인할 수 있습니다.
다음은 sys.dm_exec_sessions
뷰에서 로그인한 사용자의 접속 기록을 확인하는 쿼리 예제입니다.
SELECT login_name, host_name, program_name, login_time
FROM sys.dm_exec_sessions
WHERE is_user_process = 1
ORDER BY login_time DESC;
위의 쿼리는 sys.dm_exec_sessions
뷰에서 is_user_process
열이 1인 세션 정보를 가져와서 로그인한 사용자의 접속 기록을 로그인 시간 기준으로 내림차순으로 정렬하여 보여줍니다. login_name
은 로그인 사용자의 이름, host_name
은 접속한 호스트 이름, program_name
은 접속한 프로그램 이름을 나타냅니다.
2. 로그 테이블 생성하여 기록하기
또 다른 방법은 로그인 성공 시 로그 테이블에 기록하는 방법입니다. 로그인 성공 이벤트를 감지하기 위해 로그인 트리거를 생성하고, 로그 테이블에 기록하는 방식입니다.
다음은 로그인 성공 시 로그 테이블에 기록하는 예제입니다.
CREATE TABLE LoginLog (
ID INT IDENTITY(1,1) PRIMARY KEY,
login_name NVARCHAR(100),
login_time DATETIME,
);
CREATE TRIGGER LoginTrigger
ON ALL SERVER
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN() <> 'sa'
BEGIN
INSERT INTO LoginLog (login_name, login_time)
VALUES (ORIGINAL_LOGIN(), GETDATE());
END
END;
위의 예제는 LoginLog
테이블을 생성하고, LoginTrigger
트리거를 생성하여 로그인 성공 시 해당 정보를 LoginLog
테이블에 기록합니다. 기록되는 정보에는 로그인 사용자의 이름(login_name
)과 로그인 시간(login_time
)이 포함됩니다.
로그 테이블을 사용하면 로그인 기록을 보다 유연하게 관리할 수 있으며, 필요한 모든 정보를 기록할 수 있습니다.