IIS 日誌記錄每個 HTTP 請求的詳細資訊,是網站效能分析、異常偵測、安全稽核的關鍵資料來源。本文介紹從日誌設定、Log Parser 解析、匯入 SQL Server 深度分析的完整流程。

"C:\Program Files\Log Parser 2.2\LogParser.exe" -i:IISW3C -o:DATAGRID
"SELECT c-ip, cs-method, s-port, cs-uri-stem, sc-status, sc-win32-status,
sc-bytes, cs-bytes, time-taken FROM u_ex130615.log"
輸出為資料表瀏覽,但大檔案查詢緩慢、語法有限。
"C:\Program Files\Log Parser 2.2\logparser.exe"
"SELECT * FROM 'D:\Temp\u_ex130615.log' TO MyMVC_WebLog" -i:IISW3C -o:SQL
-oConnString:"Driver={SQL Server};server=localhost\sqlexpress;database=MyTestDb;Integrated Security=SSPI"
-createtable:ON
匯入後可用 T-SQL 進行:
time-taken 降序找最慢頁面/AJAX/API。sc-win32-status 非零值(64=客戶端斷線、121=傳輸逾時、1236=網路中斷)。sc-bytes/cs-bytes 過大找 ViewState 濫用、大檔上傳、Cookie 膨脹。IIS 日誌時間為 UTC,匯入 SQL 會拆成 date、time 兩欄。建議匯入時直接轉換為本地時間:
SELECT TO_LOCALTIME(TO_TIMESTAMP(ADD(TO_STRING(date, 'yyyy-MM-dd '), TO_STRING(time, 'hh:mm:ss')), 'yyyy-MM-dd hh:mm:ss')) AS RequestTime, *
FROM 'D:\Temp\u_ex130615.log' TO MyMVC_WebLog2 ...
或匯入後用 T-SQL 更新:
ALTER TABLE MyMVC_WebLog ADD RequestTime DATETIME;
UPDATE MyMVC_WebLog SET RequestTime = DATEADD(HH, 8, CONVERT(VARCHAR(10), date, 120) + ' ' + CONVERT(VARCHAR(13), time, 114));
善用 IIS 日誌 + Log Parser + SQL Server,讓網站運維從「被動救火」轉為「主動優化」。