2007~2011/SQL Server2010. 2. 4. 10:30
sp_readerrorlog 저장 프로시저를 사용하여 Error Log, Agent Error Log 를 검색어를 통해 확인하는 방법에 대해서 아래와 같이 정리하였습니다. 로그 파일 사이즈가 큰 경우에는 Notepad 를 사용해서 Error Log 파일을 읽고 검색하였는데 보다 쉬운 방법이 있었네요.

SQLER.COM 커뮤니티를 이용하며 항상 좋은 정보를 많이 얻고 있습니다. 커뮤니티에서 얻은 팁에 살을 붙여 블로그에 정리해 봅니다. 참고한 출처는 아래 [참고자료]에 링크가 게시되어 있습니다. 항상 좋은 정보 제공해 주시는 모든 분들께 감사하는 마음으로 ...... ^^


일반적으로 SQL Error Log를 확인하는 방법은 아래 그림과 같이 SSMS 개체 탐색기를 사용하여 Management - SQL Server Logs 메뉴를 이용하는 것입니다. 




다른 방법이 있다면 인스턴스가 설치된 폴더 아래 ErrorLog 폴더에 있는 로그 파일을 Text 편집툴로 확인하는 것이죠.
예) C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG


그리고 또 하나! 오늘의 주인공 sp_readerrorlog 함수를 사용하는 방법이 있습니다. 
sp_readerrorlog 프로시저는 문서화가 되어 있지 않아 관련된 BOL 에서 찾을 수 없었습니다만 차주언님게서 정리해 주신 자료가 있어 이렇게 붙여넣기 해 봅니다. 

1. 에러로그 파일번호: 0 = current, 1 = Archive #1, 2 = Archive #2, ....
2. 로그 파일 종류: 1 or NULL = error log, 2 = SQL Agent log 
3. 검색인자1
4. 검색인자2 : 검색인자1과2는 AND 연산입니다.
5. 검색 시작 시간 :  
6. 검색 끝 시간
7. 결과 정렬 방식 = ascending, N'desc' = descending


그리고 아래 3개의 예제를 만들어 봤습니다.

-- 현재 ErrorLog 에서 DAC Port 를 확인합니다.
sp_readerrorlog 0, 1, 'Dedicated', 'port'



-- 보관 #1 로그에서 master 데이터베이스와 관련된 로그를 확인합니다.
sp_readerrorlog 1, 1, 'master'



-- 현재 로그와 보관된 모든 로그에서 'Login failed' 메시지가 포함된 로그를 확인합니다.

DECLARE @NumErrorLogs INT,
               @i INT
 
SET @NumErrorLogs = 0
SET @i = 0
EXEC master.dbo.xp_instance_regread 'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', @NumErrorLogs OUTPUT

-- @NumErrorLogs 값은 그림에서 볼 수 있듯이 6개가 반환됩니다.
WHILE @NumErrorLogs > @i
BEGIN
    EXEC sp_readerrorlog @i, 1, 'Login failed';
    SET @i=@i+1;
END




[참고자료]
DBA의 임무 - ErrorLog확인 (18가지 임무중 5번)

[SQL Errorlog] 편하게 원하는 부분 찾기+에러로그 갯수 지정,확인

SQL Server Logs 파일 수 변경 및 로그 순환(CYCLE)


작성자 : Lai Go / 작성일자 : 2010.02.03
Posted by Lai Go