sql server 2008 で統合ログ管理システムを構築しよう
DESCRIPTION
2009年9月25日 TechFieldersセミナー 「SQL Server 2008 R2 を使用して統合ログ管理 システムを構築しよう」TRANSCRIPT
![Page 1: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/1.jpg)
1
SQL Server 2008 で統合ログ管理システムを構築しよう
マイクロソフト株式会社
エバンジェリスト
安納 順一http://blogs.technet.com/junichia/
![Page 2: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/2.jpg)
22
本日のスケジュール
13:30~16:30
SQL Server 2008で統合ログ管理システムを構築しよう
16:45~17:45SQL Serverエキスパートによる特別セッション「Hyper-V による SQL Server の統合」講師: 伊藤忠テクノソリューションズ株式会社 後藤 真人 様
17:45~18:30
ライトニングトーク
18:30~
懇親会
![Page 3: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/3.jpg)
33
本セミナーの目的と内容
目的:SQL Server は単なる「必須ソフト」ではないことを知る「なんか新しいことができそうだな」という夢を見る
内容:インフラ上のログをSQL Serverに集めて一元管理する
![Page 4: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/4.jpg)
44
お願い
• 細かな手順を全てお話しすることができません!すみません!
• SSIS/SSRS の考え方と「難解な部分」の解説を中心に行います
• 本日作成したプロジェクトと、その手順はBLOGに掲載しますhttp://blogs.technet.com/junichia/
• より理解を深めるためにおすすめ(私もこれで勉強しました)■SQL Server 2008 自習書シリーズhttp://technet.microsoft.com/ja-jp/sqlserver/dd610200.aspx
■SQL Server バーチャルラボhttp://technet.microsoft.com/ja-jp/virtuallabs/cc879114.aspx
• 2010年1-3月の間に 本セミナーの発展系を実施予定です(w/ Developer Evangelist 小高)是非とも開発担当の方とともにお越しください
![Page 5: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/5.jpg)
55
使用する環境
Windows Server 2008 R2 x64・Active Directory
Windows Server 2008 R2 x64・Internet Information ServiceSQL Server 2008 Enterprise Edition x64・インスタンス機能-データベースエンジンサービス-フルテキストサーチ
-Analysis Service-Reporting Service
・共有機能-Business Intelligence Development Studio-Integration Service
Windows 7 x64SQL Server Report Builder 2.0(ダウンロードセンターにて提供)
![Page 6: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/6.jpg)
66
ログ管理システムのイメージ
SQLDB
イベントログ
SSIS
SSRS
SSAS
【取り込み】・イベントログをデータベースに蓄積・定期的に取り込みタスクを実行・サーバーが増えても柔軟に対応可能
【統計資料】・期間を指定してレポートを作成・レポートの体裁は事前に定義できる・レポートはブラウザから表示できる
![Page 7: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/7.jpg)
77
ITPROを支える3つの機能
SSIS:SQL Server Integration Service
SSRS:SQL Server Reporting Service
SSAS:SQL Server Analysis Service
・多次元データベースによる分析(OLAP)・データマイニング
データ移入作業の可視化・外部ファイル、データベースからの取り込み・データ変換
資料作成の単純化・レポートテンプレートの作成、表示、印刷・パラメタ化による動的なレポートの生成
必要最小限のSQL文の知識と、若干のコーディング力が求められる
![Page 8: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/8.jpg)
8
取り込みプロセスの部品化と可視化
SQLDB
イベントログ
SSIS
データが無ければはじまらない!
![Page 9: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/9.jpg)
9
テーブル構成
ComputerName
LogFileName
ComputerList
EventLogData_<Logfile> Number(int)(key)
Category(nvarchar(50))
CategoryString(nvarchar(50))
ComputerName(nvarchar(50))
Data(nvarchar(max))
EventCode(nvarchar(50))
EventIdentifier(nvarchar(50))
InsertionStrings(nvarchar(50))
Logfile(nvarchar(50))
Message(ntext)
RecordNumber(int)
SourceName(nvarchar(max))
TimeGenerated(datetime)
TimeWritten(datetime)
Type(nvarchar(50))
User(nvarchar(50))
<logfile> には、Application, System, Security などが入る
SystemApplicatio
nSecurity
Server01 Server02
![Page 10: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/10.jpg)
10
Eventlogを取り込む際の留意点Category
CategoryString
ComputerName
Data
EventCode
EventIdentifier
InsertionStrings
Logfile
Message
RecordNumber
SourceName
TimeGenerated
TimeWritten
Type
User
カテゴリ番号
カテゴリ名
イベントを生成したコンピュータ名
イベントの付帯情報
Uint16 形式のイベントID
Uint32 形式のイベントID
イベントの付帯情報
ログファイルの名前(System,Application,Security など)
イベントの説明文。4000文字(bstr)を超える可能性あり。シングルクオーテーションが含まれることが多い。
イベントレコードの通番 int32(max 9,223,372,036,854,775,807 )
イベントを生成したソースプロセス(MSSQL,MSInstaller など)
イベントが発生した日時。標準時で生成。
イベントが書き込まれた日時。標準時で生成。
イベントのタイプ(情報、エラー、警告、成功の監査、失敗の監査)
イベントを発生させたユーザー
2,147,483,647
![Page 11: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/11.jpg)
11
イベントログを取得するスクリプト例
strComputer = “.”Set objService = GetObject(“winmgmts:\\“ & strComputer & “\root\cimv2”)Set objEvtSet = objService.ExecQuery _
("Select * From Win32_NTLogEvent Where Logfile='System'")
For Each e In objEvtSet
wscript.echo e.ComputerName & "," & e.EventCode
Next
![Page 12: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/12.jpg)
12
Logfile 属性について
使用可能なLogfile属性は、以下のコマンドで調査できる
C:\> wmic nteventlog list brief
FileSize LogfileName Name 6361088 Application C:\Windows\System32\Winevt\Logs\Application.evtx 8022 69632 HardwareEvents C:\Windows\System32\Winevt\Logs\HardwareEvents.evtx 0 69632 Internet Explorer C:\Windows\System32\Winevt\Logs\Internet Explorer.evtx69632 Key Management Service C:\Windows\System32\Winevt\Logs\Key Management Service.evtx69632 Media Center C:\Windows\System32\Winevt\Logs\Media Center.evtx1052672 OAlerts C:\Windows\System32\Winevt\Logs\OAlerts.evtx 254 69632 ODiag C:\Windows\System32\Winevt\Logs\ODiag.evtx 0 69632 Operations Manager C:\Windows\System32\Winevt\Logs\Operations Manager.evtx69632 OSession C:\Windows\System32\Winevt\Logs\OSession.evtx 4 30740480 Security C:\Windows\System32\Winevt\Logs\Security.evtx 40359 8458240 System C:\Windows\System32\Winevt\Logs\System.evtx 20623 1118208 Windows PowerShell C:\Windows\System32\Winevt\Logs\Windows PowerShell.evtx
![Page 13: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/13.jpg)
13
(参考)WINEVT\Channels 配下のイベントHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels 配下のイベントは Win32_NTLogEvent では取得できない。
C:\>wevtutil.exe代替策
![Page 14: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/14.jpg)
14
取り込みプロセスをSSISでデザイン
※利用手順は自習書を!
![Page 15: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/15.jpg)
15
作業のはじまり
使用するツール
• SQL Server Business Intelligence Development Studio• SQL Server Management Studio
はじめにやること
• SQL Server Management Studio を起動• SQL Server Business Intelligence Development Studioを起動し、
[ファイル]-[新規作成]-[プロジェクト]から「Integration Service プロジェクト」を選択
![Page 16: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/16.jpg)
16
SSIS
制御フローを考えてみる
Computer List取り込みソースのリスト
ソース取得
開始
ソースごとに処理を繰り返し
テーブル作成
取り込み範囲のチェック
イベントログを一括取得
レコードを1件ずつ取り出し
Insert into …
EventLog Database終了
Insert 文を生成
![Page 17: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/17.jpg)
17
制御フローを作成するには
• 部品(制御フロー項目)をデザイン画面にドラッグ&ドロップ• 各部品のパラメタを設定する• 部品同士を矢印で接続して「フロー」を決める
事前に処理の流れを決めておくことが重要
SSIS
ソース取得
開始
ソースごとに処理を繰り返し
テーブル作成
取り込み範囲のチェック
イベントログを一括取得
レコードごとに Insert 繰り返し
Insert into …
終了
![Page 18: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/18.jpg)
18
使用する部品(制御フロー項目)
• SQL文を発行するための部品• 「接続オブジェクト」の定義が必要
• 処理を繰り返すための部品• ファイルや変数、レコードセットの読み込みに使用• 処理回数が未定の場合に使用する
• VB.NETまたはC#を使用して柔軟な処理を実装したい場合に使用• 文字列の細かな処理などに使用すると便利
• WMIを使用した処理結果を受け取る場合に使用• 今回はイベントログの取得に使用している• ちなみに、EXEコマンドを実行したい場合には
![Page 19: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/19.jpg)
19
![Page 20: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/20.jpg)
20
部品(制御フロー項目)のI/O
部品
各部品は、複数のI/Oから選択することができる
データベース
ファイル
変数
直接入力データベース
ファイル
変数
(例)
変数
ループの中で処理する場合に、SQL文を変えながら処理が可能
SQL文
結果のレコードセットを変数に格納し、次の処理で使用できる
変数
接続マネージャー
Input Output
![Page 21: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/21.jpg)
21
接続マネージャー• 各部品(制御フロー項目)が外部リソースに接続する際に使用• 部品間で共有が可能
部品WMIデータリーダー
ファイル接続
WMI接続
変数
WQL
![Page 22: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/22.jpg)
22
変数
処理フローの中で使用できる、俗にいう「変数」スコープの設定が可能(プロジェクト全体/ループ内/部品内)
Boolean/Byte/Char/DateTime/DBNull/Doube/Int16/Int32/Int64/Object/SByte/Single/String/Uint32/UInt64
選択可能な型
TIPS
• 受け取る値の型がよくわからない場合には、「Object」型を選択しておくとよい
• Expressions属性により、変数が呼び出されたときに、ダイナミックに値を挿入することができる
超便利!
![Page 23: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/23.jpg)
23
Expressions属性• 部品(制御フロー項目)、接続マネージャー、変数などに用意されてい
る属性の1つ• Expression(式)を記載することで、指定した他の属性にダイナミック
に値を代入することができる
(例)SQL実行タスクSqlStatementSource属性にはSQL文を記載するが、処理によって接続先のテーブルを変えたい場合がある。Expressions属性を使用することで、SqlStatementSourceの値を部品が呼ばれる都度変更することができる。
![Page 24: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/24.jpg)
24
Expressions属性の使用例
"IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]') AND type in (N'U') ) "+ "CREATE TABLE [dbo].[EventLogData_"+ @[User::tmpLogfileName] +"] ([Number] [int] IDENTITY(1,1) NOT NULL,[Category] [nvarchar](50) NULL,[CategoryString] [nvarchar](50) NULL,[ComputerName] [nvarchar](50) NULL,[Data] [nvarchar](max) NULL,[EventCode] [nvarchar](50) NULL,[EventIdentifier] [nvarchar](50) NULL,[EventType] [nvarchar](50) NULL,[InsertionStrings] [nvarchar](50) NULL,[LogFile] [nvarchar](50) NULL,[Message] [ntext] NULL,
テーブル名に、変数@[User::tmpLogfileName] を使用することで、部品が呼ばれるたびに、異なるテーブルに対して処理を行うことができる
![Page 25: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/25.jpg)
25
スクリプトタスク内での変数の使用
スクリプト内で変数取り扱うことで、VB.NETやC#を使用した柔軟な加工が可能
Dim strTimeGenerated As String = “19000101 00:00:00”If Not IsDBNull (Dts.Variables(“User::TimeGenerated”).Value) Then
strTimeGenerated = Dts.Variables(“User::TimeGenerated”).ValuestrTimeGenerated = Mid(strTimeGenerated , 1, 8) & “ “ & _
Mid(strTimeGenerated , 9, 2) & “ “ & _Mid(strTimeGenerated , 11, 2) & “ “ & _Mid(strTimeGenerated , 13, 2)
(例)DateTimeカラムに保存する前にDateTime形式に変換
![Page 26: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/26.jpg)
26
![Page 27: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/27.jpg)
27
処理1:ソース(コンピュータ一覧)の取得
イベントログの取り込み元を取得する
dbo.ComputerList
接続マネージャ
SQL
タスク
Select ComputerName,LogfileNameFrom dbo.ComputerList
User::ComputerList
SQLStatement
![Page 28: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/28.jpg)
28
処理2:ソースごとに処理を繰り返し
Foreach
ループ
User::ComputerList
User::tmpComputerName
User::tmpLogfileName
テーブル作成
取り込み範囲のチェック
イベントログを一括取得
レコードを1件ずつ取り出し
Insert into …
Foreach
ループ
ADO列挙子(データセット)
Insert 文を生成
![Page 29: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/29.jpg)
29
処理3:テーブルを作成<LogfileName>イベントログを格納するテーブルが無い場合には作成する
User::tmpComputerName
User::tmpLogfileName
SQL
文タスク
接続マネージャ
dbo.Eventlog_<LogfileName>
"IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]') AND type in (N'U') ) "+
"CREATE TABLE [dbo].[EventLogData_"+ @[User::tmpLogfileName] +"] ([Number] [int] IDENTITY(1,1) NOT NULL,[Category] [nvarchar](50) NULL,[CategoryString] [nvarchar](50) NULL,[ComputerName] [nvarchar](50) NULL,[Data] [nvarchar](max) NULL, [EventCode] [nvarchar](50) ・・[User] [nvarchar](50) NULL,CONSTRAINT [PK_EventLogData_"+ @[User::tmpLogfileName] +"]PRIMARY KEY CLUSTERED ( [Number] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"
Expressions(SQLStatement)
完全なSQL文はAppendixに掲載
![Page 30: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/30.jpg)
30
処理4:取り込み範囲のチェック
SQL
タスク
Select MAX(RecordNumber) as MaxRecordNumberfrom [EventLog].[dbo].[EventLogData” + @[User::tmpLogfileName] + “] Where [ComputerName] Like ‘“ + @[User::tmpComputerName]” + “’%”
Expressions(SQLStatement)
接続マネージャ
dbo.Eventlog_<LogfileName>
User::tmpComputerName
User::tmpLogfileName
変数はスコープ内であればどこででも使える
テーブルには複数のコンピュータのイベントログが格納されていることに
注意
User::MaxRecordNumber
![Page 31: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/31.jpg)
31
処理4:イベントログを一括取得
WMI
データリーダー
WQLQuerySource
接続マネージャ(WMI)
User::tmpComputerName
User::tmpLogfileName
User::WQL
“Select * from Win32_NTLogEvent where logfile=“ + @[User::tmpLogfileName] + “’ and RecordNumber > “ + (DT_WSTR 10) @(User::MaxRecordNumber)
Expression(Value)
User::MaxRecordNumber
Expression(ConnectionString)
User::ConnectionString
“ServerName=\\\\”+@[User::tmpComputerName]+”;Namespace=\\root\\cimv2;UserNtAuth;UserName=;”
Expression(Value)
User::EventData
属性値に変数を使用できる
Expressionsの中では「\」は
制御記号
キャストが可能
![Page 32: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/32.jpg)
32
処理5:レコードを1件ずつ取り出し
Foreach
ループ
User::EventData
Insert into を実行
Insert 文を生成
User::Category
User::CategoryString
User::ComputerName
User::Type
User::User
取り出した値が見えずらい場合には
Object形式にしておくと便利
![Page 33: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/33.jpg)
33
処理6:Insert 文を生成SQL文を生成するにあたり、各値をSQL Serverに取り込み可能な形式に整形する
User::Category
User::User
Script
タスク
Dim strCategory As String = ""If Not IsDBNull(Dts.Variables("User::Category").Value) Then
strCategory = Dts.Variables("User::Category").Value.ToStringEnd If
Dim strMessage As String = ""If Not IsDBNull(Dts.Variables("User::Message").Value) Then
strMessage = Dts.Variables("User::Message").Value.ToStringstrMessage = Replace(strMessage, "'", "-")
End If
変数の値がNullかどうかをチェックしてから
取り出す
Messageにはシングルクオーテーションが含まれているので置き換え
![Page 34: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/34.jpg)
34
Script
タスク
Dim strTimeGenerated As String = "19000101 00:00:00"If Not IsDBNull(Dts.Variables("User::TimeGenerated").Value) Then
strTimeGenerated = Dts.Variables("User::TimeGenerated").Value.ToStringstrTimeGenerated = Mid(strTimeGenerated, 1, 8) & " " & _
Mid(strTimeGenerated, 9, 2) & ":" & _Mid(strTimeGenerated, 11, 2) & ":" & _Mid(strTimeGenerated, 13, 2)
End If
Dim strSQL As String = "INSERT INTO [EventLog].[dbo].[EventLogData_" & strLogfile & "] ([Category]" & _
",[CategoryString]" & _",[ComputerName]" & _
" VALUES('" & strCategory & "'," & _"'" & strCategoryString & "'," & _"'" & strComputerName & "'," & _
Dts.Variables("User::InsertSQL").Value = strSQL
DateTime列に取り込めるように整形
SQL文を生成
User::InsertSQL
![Page 35: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/35.jpg)
35
処理7:Insert Into を実行User::InsertSQL
SQL
タスク
')
SQLStatement
接続マネージャ
dbo.Eventlog_<LogfileName>
User::InsertSQL
INSERT INTO [EventLog].[dbo].[EventLogData_Application] ([Category],[CategoryString],[ComputerName],[Data],[EventCode],[EventIdentifier],[EventType],[InsertionStrings],[LogFile],[Message],[RecordNumber],[SourceName],[TimeGenerated],[TimeWritten],[Type],[User]) VALUES('0','','TF-SQL01-01.t6303.contoso.co.jp','','12290','1073819650','3','System.String[]','Application','Package"Package" has been cancelled.',3205,'SQLISPackage100','20090923 03:23:31','20090923 03:23:31','情報','T6303\administrator')
Value
![Page 36: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/36.jpg)
36
最後に:処理の自動化プロセスを実装し終えたら・[ビルド]する
- binフォルダに .dtsx ファイルが作成される・SQL Server Agent ジョブとして登録
- SQL Server Agent サービスを起動しておく(自動起動にする)- .dtsxファイル(パッケージファイル)を登録
![Page 37: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/37.jpg)
37
報告書のテンプレート化
資料は時間をかけずに作りたい!
SQLDB
SSIS
SSRS
![Page 38: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/38.jpg)
38
Eventlogを分析するには
System Application Securityパフォーマンス
ログ
日時
・・・・・・・・
• それぞれのデータの関連性を機械的に見出すのは難しい• 日時をキーに、それぞれのデータを比較、分析するのがおすすめ
本件は、次回のセミナーにて…
![Page 39: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/39.jpg)
39
作業のはじまり
使用するツール
• Microsoft SQL Server Report Builder 2.0
はじめにやること
• Microsoft SQL Server Report Builder 2.0 を起動する• SSRSに接続
http://ServerName/Repor_Server/
![Page 40: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/40.jpg)
40
作りたいレポート
□全て□エラー□警告□情報
タイプ V YYYYMMDD
YYYYMMDD
開始年月日
終了年月日
コンピュータ名 コンピュータ名
エラー警告
情報
CmputerName SourceName エラー 警告 情報
Computer01
Windows-Search
Security-SPP
Application Error
051
0241
10550
![Page 41: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/41.jpg)
41
グラフフィールドの設定
グラフフィールド
比較したい数字
横軸の指標
横軸が持つ要素
ComputerName
Count(type)
Type
凡例
![Page 42: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/42.jpg)
42
マトリックスの設定
[Type]
[ComputerName] [SourceName] [Count(Type)]
行グループ
コンピュータごとに複数のソース名が表示される
比較したい値
行ごとに比較したい指標
![Page 43: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/43.jpg)
43
パラメータの設定
• データセットのクエリ設定で、以下のようにWhere句を追記する
Where EventLogData_Application.Type IN (@p1) ANDEventLogData_Application.TimeGenerated >= (@p2)EventLogData_Application.TimeGenerated <= (@p3)
• 各パラメータをレポートフィールド上にドラッグドロップする
![Page 44: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/44.jpg)
44
デザインが終わったら• サーバーに保存• 以下のURLでアクセス
http://<ServerName>/Reports/またはhttp://<ServerName>/Report_Server/
注意• 一度サーバーに保存するとReport Builderでのプレビューが行えなくなります※再度 ローカルに保存しなおしてからReport Builderを再起動することで
プレビューができるようになります
![Page 45: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/45.jpg)
45
![Page 46: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/46.jpg)
46
• BI は我々の手の届くところにあります
• SQL Server はもはやツールの一部です
• SSIS/SSRS/SSAS も価格の一部です
• インフラ担当SEのみなさんが体感してください!
![Page 47: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/47.jpg)
47
進呈
本日のセミナーを みなさんの会社で実施してみませんか?
SQL Server 2008 勉強会キット・SQL Server 2008 各種自習書・本日のセミナー資料・本日のデモンストレーションで使用したプロジェクト・デモ環境の構築手順書
TechNet Plus Direct Subscription
詳細は近日公開!
講師はあなたです!
![Page 48: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/48.jpg)
48
「オラクル都市伝説」を読み解くシリーズ(動画)
YouTube上で近日公開!
SQL Server プロダクトマネージャー 北川が、オラクル社の人気コラム「都市伝説シリーズ シーズン2」を正しく読み解きます。
詳しくは、9月30日発行の TechNet Flash をご覧ください!
北川のBLOGもご覧ください http://blogs.technet.com/sqlpm-j/
![Page 49: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/49.jpg)
49
![Page 50: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/50.jpg)
50
SQL文タスク「テーブルが無ければ作成する」で使われているSQL文
"IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]') AND type in (N'U') ) "+ "CREATE TABLE [dbo].[EventLogData_"+ @[User::tmpLogfileName] +"] ([Number] [int] IDENTITY(1,1) NOT NULL,[Category] [nvarchar](50) NULL,[CategoryString] [nvarchar](50) NULL,[ComputerName] [nvarchar](50) NULL,[Data] [nvarchar](max) NULL,[EventCode] [nvarchar](50) NULL,[EventIdentifier] [nvarchar](50) NULL,[EventType] [nvarchar](50) NULL,[InsertionStrings] [nvarchar](50) NULL,[LogFile] [nvarchar](50) NULL,[Message] [ntext] NULL,[RecordNumber] [int] NULL,[SourceName] [nvarchar](max) NULL,[TimeGenerated] [datetime] NULL,[TimeWritten] [datetime] NULL,[Type] [nvarchar](50) NULL,[User] [nvarchar](50) NULL,CONSTRAINT [PK_EventLogData_"+ @[User::tmpLogfileName] +"] PRIMARY KEY CLUSTERED ( [Number] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"
![Page 51: SQL Server 2008 で統合ログ管理システムを構築しよう](https://reader034.vdocuments.net/reader034/viewer/2022052210/5593b90c1a28ab550d8b47ba/html5/thumbnails/51.jpg)
51