[SQLSERVER][Maintain]如何把追蹤檔(trc)匯入資料表
一般使用SQLProfiler追蹤資料庫我都會將結果儲存至檔案,
因為儲存至資料表對效能來說有更大的開銷(效能沒有儲存至檔案好),
但如果你真的想將相關追蹤檔案匯入資料表也是可行的,
不過建議還是先儲存在檔案後,再將相關追蹤檔案匯入資料表會來的比較好,
雖然有很多方法可以達到,這裡我將利用SQL2005內建安全性函數來完成。
需求:取得資料庫中執行時間大於3秒以上的TSQL
開啟SQLProfiler
一般設定
1.儲存至檔案
2.選擇TSQL_Duration範本
3.設定檔案大小上限並啟用檔案換用
事件選取範圍設定
勾選顯示所有資料行,依需求勾選相關資料行並調整順序,而我平常都會多新增以下資料行
DatabaseName、ApplicationName、CPU、StartTime、EndTime、RowCounts、Reads、Writes、LoginName
設定篩選
這部分相當重要,因為開啟SQLProfiler對效能有很大的開銷,
所以我們必須設定相關篩選,只擷取我們需要的資料即可,以免Server負擔過大。
擷取執行時間大於3秒相關TSQL。
擷取特定資料庫名稱。
執行查詢並確認SQLProfiler結果
將追蹤檔匯入資料表
use ricotest
SELECT IDENTITY(int, 1, 1) AS Serial, * INTO tsql_trc
FROM fn_trace_gettable('D:\ricotestlog.trc', default);
查詢執行時間大於3秒以上的資料
use ricotest
select serial,databasename,textdata,duration,cpu,rowcounts,starttime,endtime,reads,writes
from tsql_trc
where databasename='ricotest'
and duration >=3000
參考
fn_trace_gettable (Transact-SQL)