20122012. 2. 3. 15:41
SQL Server 에서 오류 메시지가 발생하였을 때, 분석을 위해 덤프를 생성하는 방법에 대해서 아래와 같이 정리하였습니다.


[환경]
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 설정 해제
*/



위와 같이 설정하면 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.


자, 이제 덤프 분석을 통해 Msg 발생 원인을 찾아보시면 됩니다. ^^;


작성자 : Lai Go / 작성일자 : 2012.02.03

Posted by Lai Go