①SQL Serverにログ保存用のDBとテーブル作成(SQL Server設定)
例:DB名→IISLogs テーブル名→InternetLog
※DB名、テーブル名は任意です
・SQL Management StudioなどでDB「IISLogs」を作成。
・「IISLogs」を右クリックして[新しいクエリ]を選択。
・以下のSQLクエリを貼り付けて実行するとテーブル「InternetLog」が生成される。
②システムDNS(データソース)の作成(Windows Server設定)
・[スタート]-[管理ツール]-[データソース(ODBC)]を開く。
・[ODBC データソース アドミニストレータ]画面で[システムDNS]タブを選択する。
・[追加]ボタンを押しデータソースのドライバで[SQL Server]を選択して[完了]ボタンを押す。
・以下の項目を入力して[次へ]ボタンを押す。
■データソースの名前→任意のデータソース名(例:IISLogs)を入力
■SQL Server サーバー名→SQL Server名
・[ユーザーが入力するSQL Server用のログインIDとパスワードを使う]を選択。
・[クライアントの設定]ボタンを押して[TCP/IP]が選択されている事を確認して[OK]ボタンを押す。
・以下の項目を入力して[次へ]ボタンを押す。
■ログインID→SQL Server用のログインID
■パスワードSQL Server用のパスワード
・[既定のデータベースを以下のものに変更する]にチェックを入れた後、保存先DB(例:IISLogs)を選択。[次へ]ボタンを押す。
・[完了]ボタンを押す。
・[データソースのテスト]ボタンを押す。
・「テストは無事に完了しました。」のメッセージが出てきたら[OK]ボタンを押す。
・再度[OK]ボタンを押して画面を閉じ、その下の画面も[OK]ボタンを押して画面を閉じる。
③ODBCロギング用の役割サービスを追加する(Windows Server設定)
・[スタート]-[管理ツール]-[サーバーマネージャ]を開く。
・左側ツリーから[役割]ツリーを開いて[Webサーバー(IIS)]を選択する。
・右側画面の[役割サービス]内の[役割サービスの追加]を押す。
・一覧から[カスタムログ]と[ODBCログ]にチェックを入れて[インストール]ボタンを押す。
④ODBCログ設定(Windows Server設定)
・コマンドプロンプトで 以下のコマンドの青字部分を環境に合わせて編集して順番に実行(4行)。
例:DB名→IISLogs テーブル名→InternetLog
※DB名、テーブル名は任意です
・SQL Management StudioなどでDB「IISLogs」を作成。
・「IISLogs」を右クリックして[新しいクエリ]を選択。
・以下のSQLクエリを貼り付けて実行するとテーブル「InternetLog」が生成される。
USE [IISLogs]
GO
/****** Object: Table [dbo].[InternetLog] Script Date: 12/20/2007 19:05:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[InternetLog](
[ClientHost] [varchar](255) NULL,
[username] [varchar](255) NULL,
[LogTime] [datetime] NULL,
[service] [varchar](255) NULL,
[machine] [varchar](255) NULL,
[serverip] [varchar](50) NULL,
[processingtime] [int] NULL,
[bytesrecvd] [int] NULL,
[bytessent] [int] NULL,
[servicestatus] [int] NULL,
[win32status] [int] NULL,
[operation] [varchar](255) NULL,
[target] [varchar](255) NULL,
[parameters] [varchar](255) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
②システムDNS(データソース)の作成(Windows Server設定)
・[スタート]-[管理ツール]-[データソース(ODBC)]を開く。
・[ODBC データソース アドミニストレータ]画面で[システムDNS]タブを選択する。
・[追加]ボタンを押しデータソースのドライバで[SQL Server]を選択して[完了]ボタンを押す。
・以下の項目を入力して[次へ]ボタンを押す。
■データソースの名前→任意のデータソース名(例:IISLogs)を入力
■SQL Server サーバー名→SQL Server名
・[ユーザーが入力するSQL Server用のログインIDとパスワードを使う]を選択。
・[クライアントの設定]ボタンを押して[TCP/IP]が選択されている事を確認して[OK]ボタンを押す。
・以下の項目を入力して[次へ]ボタンを押す。
■ログインID→SQL Server用のログインID
■パスワードSQL Server用のパスワード
・[既定のデータベースを以下のものに変更する]にチェックを入れた後、保存先DB(例:IISLogs)を選択。[次へ]ボタンを押す。
・[完了]ボタンを押す。
・[データソースのテスト]ボタンを押す。
・「テストは無事に完了しました。」のメッセージが出てきたら[OK]ボタンを押す。
・再度[OK]ボタンを押して画面を閉じ、その下の画面も[OK]ボタンを押して画面を閉じる。
③ODBCロギング用の役割サービスを追加する(Windows Server設定)
・[スタート]-[管理ツール]-[サーバーマネージャ]を開く。
・左側ツリーから[役割]ツリーを開いて[Webサーバー(IIS)]を選択する。
・右側画面の[役割サービス]内の[役割サービスの追加]を押す。
・一覧から[カスタムログ]と[ODBCログ]にチェックを入れて[インストール]ボタンを押す。
④ODBCログ設定(Windows Server設定)
・コマンドプロンプトで 以下のコマンドの青字部分を環境に合わせて編集して順番に実行(4行)。
cd C:\windows\system32\inetsrv
appcmd unlock config -section:system.webServer/odbcLogging
appcmd set config -section:ODBCLogging -datasource:データソース名(例:IISLogs) -tableName:テーブル名(例:InternetLog) -username:SQL Server用のログインID -password:SQL Server用のパスワード
appcmd set sites "ログ対象のサイト(例:Default Web Site)" -logFile.logFormat:Custom -logFile.customLogPluginClsid:{FF16065B-DE82-11CF-BC0A-00AA006111E0}
以上でログがSQL Serverのテーブルにリアルタイムで登録されていくはず。
あくまでも自分の環境で成功した事なので実行は自己責任でお願いします。
参考URL:
http://www.microsoft.com/japan/opensource/php/learning/article4.mspx
http://weblogs.asp.net/steveschofield/archive/2007/12/20/iis7-post-57-how-to-setup-odbc-logging-in-iis-7-0.aspx
http://support.microsoft.com/kb/245243
