IIS 記錄檔匯入 SQL Server

欲將 IIS 網站的記錄檔拋轉至 SQL Server,很簡單的做法如下

安裝 Log Parser

Log Parser 是一個讀取各種 Log 檔的工具程式,可以使用類似 T-SQL 的語法來查詢多個文字檔案中的資料,請參閱: 功能強大且威名遠播的記錄分析器

將 IIS 記錄定時排程轉入 SQL Server 資料庫,可以先將查詢語法寫成批次檔,透過 Windows 工作排程來執行。

首先下載並安裝 Log Parser (採用下一步安裝法)

下載點 http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=24659


新增 Backup 資料匣

建立一個備份資料匣,當拋轉資料後將紀錄檔搬移至這個目錄

image


執行命令

修改以下命令,如路徑與資料庫參數,開啟命令提示字元執行或將以下複製建立為批次檔,此段指令會自動建立資料表

cd C:\Program Files (x86)\Log Parser 2.2

LogParser "SELECT * INTO iisLogs FROM C:\inetpub\logs\LogFiles\W3SVC4\*.log" -i:iisw3c -o:SQL -server:localhost -database:webLogs -username:sa -password:yourpassword -createTable: ON

move C:\inetpub\logs\LogFiles\W3SVC4\*.log C:\inetpub\logs\LogFiles\W3SVC4\Backup\


完成後可以使用 SSMS 查詢

SNAGHTMLefaafb


同場加映

Log Parser 功能不僅於讀取 IIS 的記錄檔,還提供很多種讀取的格式,舉例若有 CSV 檔案想要轉入 SQL Server 也可以適用,以下範例是讀取一個 CSV 檔案且沒有欄位標題的作法

cd C:\Program Files (x86)\Log Parser 2.2

LogParser "SELECT FileName, RowNumber, Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field11, Field12, Field13, Field14, Field15, Field16, Field17, Field18 INTO aLog FROM E:\Temp\*.*" -i:CSV -headerRow:OFF -o:SQL -server:localhost -database:webLogs -username:sa -password:YOUR_PASSWORD -createTable: ON

move E:\Temp\*.* C:\Temp\Backup\

以上也可以將 Field1 做別名如  Field1 as TransTime


參考文章

Importing IIS Logs into a SQL Database / Table – Blog

Introduction to Log Parser Week 39 – YouTube

介紹好用工具:Log Parser Lizard GUI (最佳視覺化 LP 工具) – Blog