使用者有時會觀察到 TMG 日志隊列(Log Queue,擴充名為 .LLQ)持續增長或 TMG 安裝目錄下 Logs 檔案夾異常增長,如果TMG日志隊列檔案夾使用預設配置,則會導緻C槽空間越來越少。伴随而來的問題還有:TMG無法記日志,無法生成報告。
這個問題往往發生在日志格式改動、日志檔案夾改動、日志保留時間改動等日志配置操作之後。
<b>問題分析</b>
==========
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/2625.clip_5F00_image0014_5F00_1427E676.png"></a>
2. 同時,檢視一下應用程式事件日志,發現有許多 MSSQL$MSFW 的報錯,事件 ID 為 17204 (或 1720X),報錯資訊是無法打開 TMG 日志檔案如 ISALOG_20120101_FWS_000.mdf (系統找不到指定的檔案)。
3. 出現以上兩種症狀的原因是:
1) TMG 日志是記在本地的 SQL Express 資料庫裡,或者曾經記錄在本地 SQL Express 資料庫而後改為記到遠端 SQL 伺服器。
SQL Express 資料庫在磁盤上的檔案名格式為 ISALOG_YYYYMMDD_FWS_XXX.mdf 和 ISALOG_YYYYMMDD_WEB_XXX.mdf,比如 ISALOG_20120101_FWS_000.mdf 表示2012年1月1日的防火牆日志檔案。
2) 若由于某種原因,磁盤上的日志檔案如 ISALOG_20120101_FWS_000.mdf 已經不存在了(如意外删除或者移動),但是 SQL Express 資料庫裡還有這個資料庫的記錄
3) MSSQL$MSFW 服務啟動時會檢查資料庫的完整性,當資料庫裡的記錄無法比對到相應磁盤上的檔案時,MSSQL$MSFW 這個服務就會出現異常。
4) MSSQL$MSFW 會将錯誤記錄在事件日志裡,同時 MSSQL$MSFW 停止将新的日志記錄到日志資料庫裡,都暫存在日志隊列中,日志隊列不停增長,導緻磁盤被占滿。
<b>解決方案</b>
删除 SQL Express 裡 TMG 日志資料庫的無效記錄即可解決問題。具體操作如下:
1. 以管理者身份啟動 指令行
· 連接配接到 TMG 本地日志資料庫執行個體 MSFW: 運作指令 sqlcmd -S localhost\MSFW
· 運作指令 use master
· 運作指令 go
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/1122.clip_5F00_image0024_5F00_113281C3.png"></a>
· 運作指令 select name from sysdatabases
· 上面幾個指令運作完後會看到目前 MSFW 執行個體下所有的資料庫名
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/4278.clip_5F00_image0034_5F00_7DA52221.jpg"></a>
2. 需要删除哪些記錄?
· 如果目前日志已經記入遠端 SQL 伺服器,那可以删除本地所有記錄
· 如果目前日志依然是記錄在本地 SQL Express 資料庫,請對照TMG日志配置裡設定的日志保留時間:TMG 管理控制台 à 日志和報告 à 日志 à 配置 Firewall 日志 和 配置 Web 代理日志 à 打開”選項” ,在最下面可以看到日志保留天數,預設是7天。
這樣,隻要是這些天數以前的資料庫記錄都可以删除。
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/4760.clip_5F00_image0044_5F00_0C201E47.png"></a>
3. 删除資料庫
· 假設我們要删除 2011 年11 月全部資料庫,請運作如下指令(請注意最後的 % 表示通配符,比對任意長度的任意字元串,TMG 日志檔案是以日期命名的,ISALOG_201111% 表示2011年11月全部TMG 日志資料庫; 再比如若要删2011年全部資料庫,要用 ISALOG_2011% )
select ‘drop database ‘ + name from sysdatabases where name like ‘ISALOG_201111%’
· 這個指令的輸出是多行 drop database ISALOG_201111%,類似下面圖中黃色框裡的。
· 您把這個輸出全部标記(右擊指令行視窗,選擇“标記”),然後再滑鼠單擊一下,然後再右擊并選擇“粘貼”,就會看到類似下圖紅色框中的
· 再輸入指令 go,按回車,這時候這些選中的資料庫記錄就都會被删除
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/3782.clip_5F00_image0054_5F00_57331909.png"></a>
4. 驗證TMG 無效日志資料庫是否還存在
· 上面幾個指令運作完後是輸出剩下的預設的幾個資料庫master, tempdb, model, msdb 以及有效日期以内(取決于日志保留多少天,比如若是15天的話,就是15天以内的)的 TMG 日志資料庫
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/4278.clip_5F00_image0064_5F00_7458C113.png"></a>
5. 檢查日志隊列狀态
到TMG管理界面上看日志隊列狀态(日志和報表界面 à 檢視日志狀态),如果上述所有無效資料庫都被删除,此時應該看到日志隊列應該在減小,說明 MSSQL$MSFW 服務正在把日志隊列中的資料記入日志檔案或者遠端SQL 伺服器正在寫入日志。最後日志隊列大小會減為0,或者在0到略大于0之間波動,表示日志記錄恢複正常。
<a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-67-71-metablogapi/4377.clip_5F00_image0074_5F00_37548F81.png"></a>
本文轉自cantgis 51CTO部落格,原文連結:http://blog.51cto.com/cantgis/1166734,如需轉載請自行聯系原作者