현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

Step by Step: SQL Server 에러 로그 확인 및 관리 방법

소개
SQL Server의 현재 상태를 가장 정확하고 빠르게 파악할 수 있는 SQL Server 에러 로그를 가독하기 좋은 형태로 관리하는 방법을 소개합니다.

아울러 이를 별도의 테이블로 관리할 수 있는 방법을 설명합니다.


방법
다음 방법을 순서대로 따라 해 보세요.
  1. SQL Server 에러 로그 읽기
    1. SQL Server Management Studio(SSMS) 실행하기

      [시작], [모든 프로그램], [Micro SQL Server 2005](또는 Micro SQL Server 2008이나 2008 R2), [SQL Server Management Studio]를 차례대로 클릭하여 SQL Server Management Studio를 실행하세요.


    2. 데이터베이스 연결하기

      연결 정보(서버 이름 또는 IP Address 로그인 정보)를 입력하여 조회하고자 하는 서버와 연결하세요.


    3. sp_readerrolog 구문 실행


      이 때, 실행 버튼(F5 혹은 CTRL+E)을 누르기 전에 [텍스트로 결과 표시]를( )선택하거나 CTRL+T를 누르세요.

      이후 실행하게 되면 아래와 같이 가독하기 좋은 형태로 에러 로그를 확인할 수 있습니다.



      서버의 정보(OS 및 SQL Sever의 버전, 서버 이름), master 데이터베이스 및 에러 로그 파일의 위치 및 활성화된 Trace Flag의 정보도 확인할 수 있습니다.

      스크롤바를 이동하여 현재 시점에서 주목할 만한 메시지는 없는지 확인하도록 합니다.

  2. SQL Server 에러 로그 관리하기

    SQL Server 에러 로그는 기본적으로 총 7개의 파일로 관리 됩니다. 서비스가 재시작 될 때 마다 Rollover 되며, 기본 파일의 수를 넘어서는 로그는 사라집니다.
    따라서 예기치 않은 이유로 SQL Server가 여러 번 반복적으로 재시작 되면 문제 시점의 로그를 확보할 수 없게 될 수도 있습니다. 이를 예방하기 위해 기본적으로 관리되는 7개의 파일 보다 더 많은 수의 파일로 관리되도록 조정할 수 있습니다.
    여기서는 파일의 수를 늘리는 것이 아닌 에러 로그를 테이블로 관리하는 방법을 소개합니다. 이 내용은 How to Archive your SQL Errorlogs into a Table에서도 확인할 수 있습니다.

    수 많은 로그인 실패 메시지 등이 로깅 되면서 하나의 에러 로그 파일의 크기가 매우 커지게 되는 경우가 발생할 수 있습니다.



    이러한 경우, 에러 로그를 로그 뷰어나 sp_readerrorlog 구문으로 읽기를 시도하면 오랜 시간이 걸릴 수 있으므로 내가 원하는 시간에 대한 로그 파악이 어려울 수도 있습니다.

    이 때 활용할 수 있는 방법은 다음과 같습니다.
    1. SQL Server Errorlog 및 Agent Log 관리용 테이블 생성

      IF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MS_SQLERRORLOG]') AND type in (N'U'))BEGINCREATE TABLE [dbo].[MS_SQLERRORLOG](    [LogDate] [datetime] NULL,    [ProcessInfo] [varchar](10) NULL,    [Text] [varchar](max) NULL) ON [PRIMARY]ENDGOIF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MS_SQLAGENTLOG]') AND type in (N'U'))BEGINCREATE TABLE [dbo].[MS_SQLAGENTLOG](    [LogDate] [datetime] NULL,    [ProcessInfo] [varchar](10) NULL,    [Text] [varchar](max) NULL) ON [PRIMARY]ENDGO
    2. 현재 시점까지의 Errorlog 저장하기
      INSERT INTO MS_SQLERRORLOGEXEC ('sp_readerrorlog')GOEXEC msdb.dbo.sp_cycle_errorlogGO
    3. 현재 시점까지의 Agent Log 저장하기(에이전트 서비스가 반드시 동작 중이어야 함)
      INSERT INTO MS_SQLAGENTLOGEXEC ('sp_readerrorlog -1, 2')GOEXEC msdb.dbo.sp_cycle_agent_errorlogGO
    4. 테이블 생성 후 2), 3)의 방법을 주기적으로 수행하여 SQL Server 로그를 테이블로 이관하여 관리하면, Log Date 및 ProcessInfo 등에 따라서 원하는 내용의 로그를 보다 빠르게 확인할 수 있으며 아울러 에러 로그의 크기가 커져서 디스크의 공간을 과도하게 차지하는 것을 예방할 수 있습니다.


추가 정보
다음 내용을 참고 하세요.


의견 보내기
의견 보내기
Microsoft 고객지원 사이트에서는 고객님의 소리를 귀담아 듣습니다. 아래 의견 보내기로 소중한 의견 보내주시기 바랍니다.
속성

문서 ID: 2497528 - 마지막 검토: 05/26/2014 11:01:00 - 수정: 1.3

  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Web
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • kbstepbystep kbhowto KB2497528
피드백