자 이제 내 기준으로 내가 필요했던 걸 해볼께...
"내가 하고자 하는건 윈도우 시스템의 이벤트 로그를 데이터베이스에 INSERT하고 싶어.."
순서는 이래
- 이벤트 로그를 저장할 데이터베이스와 테이블을 생성하고
- log parser 쿼리와 batch 파일을 만들고
- 작업 스케줄러에 등록을 해서 주기적으로 데이터베이스에 INSERT 하자.
1. 그럼 데이터베이스와 테이블을 생성해보자..
가. 데이터베이스 생성 (뭐 대충 이런식으로 만들고)
/*
1. System Event Log 저장 DB 생성
*/
USE master
go
CREATE DATABASE [SysEventLogDb]
ON PRIMARY
(
NAME = SysEventLogDb
, FILENAME = N'D:\SqlDBData\MSSQL10_50.MSSQLSERVER\MSSQL\DATASysEventlogDb.mdf'
, SIZE = 3MB
, MAXSIZE = UNLIMITED
, FILEGROWTH = 1MB
)
LOG ON
(
NAME = SysEvetLogDbLog
, FILENAME = N'D:\SqlDBData\MSSQL10_50.MSSQLSERVER\MSSQL\DATASysEventlogDbLog.ldf'
, SIZE = 2MB
, MAXSIZE = UNLIMITED
, FILEGROWTH = 10%
)
나. 테이블도 만들자
여기서 주의할 점은 varchar 데이터 크기 값을 귀찮다고 max로 줘버리면 데이터 입력시 공백이 입력이 되니깐 주의해...
use SysEventLogDb
go
CREATE TABLE [EventLog]
(
EventLog varchar(500)
, RecordNumber int
, TimeGenerated datetime
, TimeWritten datetime
, EventID int
, EventType int
, EventTypeName varchar(500)
, EventCategory int
, EventCategoryName varchar(500)
, SourceName varchar(500)
, Strings varchar(8000)
, ComputerName varchar(500)
, SID varchar(500)
, Message varchar(8000)
, Data varchar(8000)
)
2. Log Parser 쿼리를 만들자
아래에 있는게 쿼리야..
logparser.exe -i:evt "SELECT * FROM System TO EventLog" -o:SQL -Driver:"SQL Server Native Client 11.0" -server:[IP,PORT | ALIAS] -database:[데이터베이스 이름] -username:[user id] -password:[password] -createtable:OFF -stats:ON
하나씩 설명 해주마..
* logparser.exe : 당연히 logparser.exe를 실행하라는 거고 당연히 뒤에껀 argument 값이겠지..
* -i:evt : -i는 input 하라는 거고 evt는 이벤트 로그를 뜻해. 고로 이벤트 로그의 내용을 입력하겠다는 표시야.
* "SELECT * FROM System TO EventLog" : SELECT * FROM System은 이벤트로 로그의 시스템 이벤트 로그를 SELECT 해서 보겠다는 거야, System이 입력된 부분에 Security, Application등을 넣어서 데이터를 뽑으면 되겠지? TO EventLog는 EventLog라는 곳으로 보내겠다는 거야 즉 OUPUT이 SQL이면 EventLog는 테이블 명이겠지
주의 할 점은 Security 는 관리자 권한이 있어야만 데이터를 뽑을 수 어 그러니깐 "관리자 권한으로 실행"을 해줘야해...
* -o:SQL : -o는 ouput 하라는 거고 SQL은 SQL DB에 연결해서 하겠다는 거지
* 나머지 -Driver, -Server, -Database -username, -password는 DB서버에 접속하기 위한 설정 값이고
* -createtable:OFF : 이거는 데이터를 입력할 때 DB에 테이블을 생성해서 넣겠다는 거야 이미 만들어 져 있고 덮어쓰거나 오류가 발생할 여지가 있으니깐 이건 OFF시켜서 생성하지 못하게 해야되
* -stats:ON : 이거는 쿼리 실행 완료 후 실행해서 넘긴 item의 숫자와 소요 시간을 알려주는거야.
이대로 하면 기본적인 쿼리 골격은 만들어 진거야.. 아..힘들다... 쉬었다 갈께..
<4부 끝>
댓글 없음:
댓글 쓰기