SQL Server 에서 오류 메시지가 발생하였을 때, 분석을 위해 덤프를 생성하는 방법에 대해서 아래와 같이 정리하였습니다.
[환경]
SQL Server 2008
[시나리오]
Msg 605, Level x, State x 오류가 발생하는 경우 원인 분석을 위해 오류 발생 시, Dump 가 발생하도록 설정하는 방법입니다.
[환경]
SQL Server 2008
[시나리오]
Msg 605, Level x, State x 오류가 발생하는 경우 원인 분석을 위해 오류 발생 시, Dump 가 발생하도록 설정하는 방법입니다.
DBCC TRACEON (2551, 8026, -1)
/*
2551 : Filtered dump 생성
8026 : 최초 Exception dump 가 발생하면 설정된 dumptrigger 를 해제합니다.즉, 1회만 덤프를 받을 수 있습니다. 오류가 발생할 때마다 덤프가 생성되는 것을 방지할 수 있습니다.
*/
DBCC TRACESTATUS(-1)
/*
현재 설정된 Trace Flag 정보 확인
*/
DBCC DUMPTRIGGER('SET', 605)
/*
Msg 605 오류 발생 시, 덤프 발생
*/
DBCC TRACEON(3604, -1)
DBCC DUMPTRIGGER('DISPLAY')
DBCC TRACEOFF(3604, -1)
/*
현재 설정된 덤프 트리거 정보 확인
Exception = 605
*/
DBCC DUMPTRIGGER('CLEAR', 605)
/*
덤프가 발생하지 않았다면 수동으로 덤프 트리거를 제거하는 방법
*/
DBCC TRACEOFF(2551, 8026, -1)
/*
Trace flag 설정 해제
*/
/*
2551 : Filtered dump 생성
8026 : 최초 Exception dump 가 발생하면 설정된 dumptrigger 를 해제합니다.즉, 1회만 덤프를 받을 수 있습니다. 오류가 발생할 때마다 덤프가 생성되는 것을 방지할 수 있습니다.
*/
DBCC TRACESTATUS(-1)
/*
현재 설정된 Trace Flag 정보 확인
*/
DBCC DUMPTRIGGER('SET', 605)
/*
Msg 605 오류 발생 시, 덤프 발생
*/
DBCC TRACEON(3604, -1)
DBCC DUMPTRIGGER('DISPLAY')
DBCC TRACEOFF(3604, -1)
/*
현재 설정된 덤프 트리거 정보 확인
Exception = 605
*/
DBCC DUMPTRIGGER('CLEAR', 605)
/*
덤프가 발생하지 않았다면 수동으로 덤프 트리거를 제거하는 방법
*/
DBCC TRACEOFF(2551, 8026, -1)
/*
Trace flag 설정 해제
*/
위와 같이 설정하면 Msg 605 오류가 최초 발생하였을 때, 한 번 Filtered dump 가 발생하게 됩니다.
2012-02-03 13:46:31.290 spid52 * BEGIN STACK DUMP:
2012-02-03 13:46:31.290 spid52 * 02/03/12 13:46:31 spid 52
2012-02-03 13:46:31.290 spid52 *
2012-02-03 13:46:31.290 spid52 * Server was configured to produce dump on the following event - ex_raise2: Exception raised, major=6, minor=5, state=3, severity=21
.... (중략)
2012-02-03 13:46:31.350 spid52 * -----------------------------------------------------------------------
2012-02-03 13:46:31.360 spid52 Stack Signature for the dump is 0x81A50462
2012-02-03 13:46:38.060 spid52 External dump process return code 0x20000001.
External dump process returned no errors.
2012-02-03 13:46:38.060 spid52 오류: 605, 심각도: 21, 상태: 3.
2012-02-03 13:46:31.290 spid52 * 02/03/12 13:46:31 spid 52
2012-02-03 13:46:31.290 spid52 *
2012-02-03 13:46:31.290 spid52 * Server was configured to produce dump on the following event - ex_raise2: Exception raised, major=6, minor=5, state=3, severity=21
.... (중략)
2012-02-03 13:46:31.350 spid52 * -----------------------------------------------------------------------
2012-02-03 13:46:31.360 spid52 Stack Signature for the dump is 0x81A50462
2012-02-03 13:46:38.060 spid52 External dump process return code 0x20000001.
External dump process returned no errors.
2012-02-03 13:46:38.060 spid52 오류: 605, 심각도: 21, 상태: 3.
자, 이제 덤프 분석을 통해 Msg 발생 원인을 찾아보시면 됩니다. ^^;
작성자 : Lai Go / 작성일자 : 2012.02.03