XEvent(확장이벤트)를 활용한 활성 로그 모니터링 하기
- Version : SQL Server 2012, 2014
XEvent의 file_wirte_complete, transaction_log 이벤트를 사용하여 트랜잭션이 커밋될 때 트랜잭션 로그 파일에 기록되는 것을 모니터링할 수 있다.
실습을 위해 테스트 테이블을 생성한다.
CREATE TABLE TestTable ( c1 INT IDENTITY, c2 CHAR (1000) DEFAULT 'a'); GO
INSERT INTO [TestTable] DEFAULT VALUES; GO |
XEvent를 설정한다.
-- Drop the session if it exists. IF EXISTS ( SELECT * FROM sys.server_event_sessions WHERE [name] = N'MonitorLog') DROP EVENT SESSION [MonitorLog] ON SERVER GO
-- Create the event session CREATE EVENT SESSION [MonitorLog] ON SERVER ADD EVENT [sqlserver].[file_write_completed], ADD EVENT [sqlserver].[transaction_log] ADD TARGET [package0].[ring_buffer] WITH (MAX_MEMORY = 50MB, max_dispatch_latency = 1 seconds) GO
-- Start the session ALTER EVENT SESSION [MonitorLog] ON SERVER STATE = START; GO |
SSMS에서 XEvent의 라이브데이터 감시를 UI를 통해서 확인할 수 있다.
라이브데이터 감시가 시작되면 상단의 컬럼탭에서 마우스 오른쪽을 클릭하여 [열 선택]을 클릭한다.
[열 선택] 창이 나타나면 필요한 열을 추가하여 모니터링에 표시할 수 있도록 한다.
데이터를 입력하면 트랜잭션 로그가 커밋 될 때 트랜잭션로그파일에 기록되는 것을 확인할 수 있다.
[참고자료]
http://www.sqlskills.com/blogs/paul/t-sql-tuesday-67-monitoring-log-activity-with-extended-events/
강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp