AS
DECLARE @TraceID INT
EXEC sp_trace_create @TraceID OUTPUT, 8
EXEC sp_trace_setstatus @TraceID, 1
RETURN
GO
EXEC sp_procoption blackbox, 'startup', 'on'
GO
blackbox는 SQL 서버에 보내진 마지막 5MB 분량의 T-SQL 문장을 가진 특별한 추적 파일로
추적 정보를 \Data 디렉터리의 blackbox.trc 파일에 추가하도록 추적을 정의합니다.
추적이 시작되면 파일 크기가 5MB에 도달할 때까지 추적 정보가 blackbox.trc 파일에 기록됩
니다. 그런 다음 추적은 다른 추적 파일인 blackbox_1.trc를 만들고 추적 정보를 새 파일에 기록
합니다. blackbox_1.trc의 크기가 5MB가 되면 추적이 blackbox.trc로 전환됩니다. 따라서 항상
최고 5MB의 추적 정보를 사용할 수 있습니다.
SQL 서버가 명확하지 않은 이유로 갑자기 죽을경우 blackbox 추적을 통해 문제해결의 실마리
를 찾을 수 있을것입니다.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trace_blackbox]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[trace_blackbox]
GO
CREATE PROCEDURE trace_blackbox (
@on int = 2
)
AS
Begin
DECLARE @traceid int
DECLARE @blackboxstatus int
DECLARE @dir nvarchar(80)
SET @traceid = 0
SET @blackboxstatus = 0
SET NOCOUNT ON
SELECT @traceid = traceid FROM :: fn_trace_getinfo(0)
WHERE property = 1 and value = 8
-- 추적을 중지하고 추적파일을 삭제
IF @on = 0 and @traceid > 0 BEGIN
SELECT @blackboxstatus = cast(value as int) FROM :: fn_trace_getinfo(0)
WHERE traceid = @traceid and property = 5
--stop blackbox trace
IF @blackboxstatus > 0
exec sp_trace_setstatus @traceid,0
--delete blackbox trace definition
exec sp_trace_setstatus @traceid,2
END
-- 추적을 시작
IF @on = 1
BEGIN
--create blackbox trace
IF @traceid < 1 exec sp_trace_create @traceid OUTPUT, 8
--start blackbox trace
exec sp_trace_setstatus @traceid,1
END
-- 추적 메시지 표시
SET @traceid = 0
SET @blackboxstatus = 0
SELECT @traceid = traceid FROM :: fn_trace_getinfo(0)
WHERE property = 1 and value = 8
SELECT @blackboxstatus = cast(value as int) FROM :: fn_trace_getinfo(0)
WHERE traceid = @traceid and property = 5
--추적이 실행중이면
IF @traceid > 0 and @blackboxstatus > 0
BEGIN
--추적파일이 저장되는 경로와 파일이름을 찾아온다.
SELECT @dir = cast(value as nvarchar(80))+'.trc' FROM :: fn_trace_getinfo(0)
WHERE traceid = @traceid and property = 2
SELECT 'The blackbox trace is running and the trace file is in the following directory.' MESSAGE
SELECT @dir FileName
END
ELSE
SELECT 'The blackbox trace is not running.' MESSAGE
SET NOCOUNT OFF
End
/*
To start the blackbox trace, type the following command in a SQL Server Query Analyzer window:
trace_blackbox 1
To check the status of the blackbox trace, issue the following command:
trace_blackbox
To stop the blackbox trace, issue the following command:
trace_blackbox 0
*/
'연구개발 > DBA' 카테고리의 다른 글
연습문제 (0) | 2012.01.16 |
---|---|
테이블의 행 구조 (0) | 2012.01.16 |
테이블 변수 vs 임시 테이블 (0) | 2012.01.09 |
Admin::Started with SQL Server (서비스시작) 추적플래그 trace (0) | 2012.01.08 |
MSSQL CHECKPOINT (0) | 2012.01.08 |