Share via


방법: 이벤트 수신 후 SQL 데이터베이스에 저장

관리자는 특정 응용 프로그램, 서비스 또는 오류에 대해 Windows 이벤트 로그를 모니터링합니다. 이벤트 로그에서 특정 쿼리 문자열로 식별되는 특정 이벤트를 쿼리하는 방법을 배울 때 이벤트 데이터 마이닝이라는 문제에 부딪히게 됩니다. 이벤트에는 중요한 정보가 포함될 수 있습니다. 일반적으로 관리자는 알림을 수행하거나, 서비스 다시 시작 또는 서버 다시 부팅과 같은 수정 동작을 위한 작업을 만듭니다. 예를 들어, 중간 규모의 네트워크 관리자는 많은 컴퓨터의 이벤트 로그에서 이벤트를 걸러 내고 특정 패턴이 나타날 때 경고를 만들어야 할 수 있습니다. 작업의 성공이나 실패에 따라 전자 메일 알림을 만드는 것이 유용할 수 있습니다. 이벤트 전달을 사용하여 여러 컴퓨터를 동시에 모니터링할 수도 있습니다.

다음 코드 예제에서는 많은 컴퓨터에서 전달된 이벤트를 관리하는 방법을 보여 줍니다. 가장 간단한 양식의 예제에서는 이벤트를 수집한 후 XML 파일에 저장할 수 있습니다. 그런 다음 프로그래밍 방식으로 이 XML 파일을 쿼리하여 특정 조건이나 패턴을 모니터링할 수 있습니다. 관리자가 일반적으로 경험하는 한 가지 문제점은 이벤트 수가 빠르게 증가하여 XML 로그를 검색하고 필요한 정보를 마이닝하는 데 점점 더 많은 리소스가 필요하다는 것입니다. 이 예제에서는 부울 설정을 교대로 반복하여 이벤트 정보를 SQL 데이터베이스에 쓰는 방법을 보여 줍니다. SQL 데이터베이스에 데이터를 쓰는 작업은 다음과 같은 이유로 유용합니다.

  • 이벤트 레코드를 통해 쿼리를 확장할 수 있도록 합니다.
  • SQL 알림을 사용하여 경고 및 전자 메일 알림을 만들 수 있도록 합니다.
  • SQL 보고를 사용하여 작업 보고서를 생성할 수 있도록 합니다.

다음 코드 예제에서는 System.Diagnostics.Eventing.Reader 네임스페이스 클래스를 사용하여 지정한 이벤트에 대해 알림을 신청합니다. 지정한 조건을 충족하는 이벤트가 이벤트 로그에 게시되면 수신기에 의해 이벤트 데이터가 수집됩니다. EventLogQuery 클래스를 사용하여 이벤트 쿼리를 형성하는 조건을 지정합니다. EventLogWatcher 클래스를 통해 EventRecordWritten 이벤트에 대한 이벤트 처리기 메서드를 설정하여 알림 신청을 만듭니다. 쿼리 조건을 충족하는 이벤트가 로그에 게시되면 이벤트 처리기 메서드가 호출됩니다.

예제

이 예제를 이해하려면 주요 부분을 이해하는 것이 도움이 됩니다.

코드 컴파일

이 예제에서는 System.dll 및 System.Core.dll 파일에 대한 참조가 필요합니다. 또한 이 예제는 System.Data.dll 및 System.Xml.dll을 참조하여 이벤트 XML을 조작하고 SQL 데이터베이스에 데이터를 씁니다. 이 예제를 실행할 때는 상태를 관리자로 높여야 합니다. 그렇지 않으면 특정 이벤트 로그 채널에 액세스하지 못할 수 있습니다.

참고 항목

개념

이벤트 로그 시나리오

Send comments about this topic to Microsoft.

Copyright © 2007 by Microsoft Corporation. All rights reserved.