[SQL SERVER][Maintain]如何把追蹤檔(trc)匯入資料表

[SQLSERVER][Maintain]如何把追蹤檔(trc)匯入資料表

一般使用SQLProfiler追蹤資料庫我都會將結果儲存至檔案,

因為儲存至資料表對效能來說有更大的開銷(效能沒有儲存至檔案好),

但如果你真的想將相關追蹤檔案匯入資料表也是可行的,

不過建議還是先儲存在檔案後,再將相關追蹤檔案匯入資料表會來的比較好,

雖然有很多方法可以達到,這裡我將利用SQL2005內建安全性函數來完成。

image

 

需求:取得資料庫中執行時間大於3秒以上的TSQL

開啟SQLProfiler

一般設定

image

1.儲存至檔案

2.選擇TSQL_Duration範本

3.設定檔案大小上限並啟用檔案換用

 

事件選取範圍設定

image

勾選顯示所有資料行,依需求勾選相關資料行並調整順序,而我平常都會多新增以下資料行

DatabaseName、ApplicationName、CPU、StartTime、EndTime、RowCounts、Reads、Writes、LoginName

 

設定篩選

這部分相當重要,因為開啟SQLProfiler對效能有很大的開銷,

所以我們必須設定相關篩選,只擷取我們需要的資料即可,以免Server負擔過大。

image

擷取執行時間大於3秒相關TSQL。

 

image

擷取特定資料庫名稱。

 

執行查詢並確認SQLProfiler結果

image

image

 

將追蹤檔匯入資料表


use ricotest
SELECT IDENTITY(int, 1, 1) AS Serial, * INTO tsql_trc
FROM fn_trace_gettable('D:\ricotestlog.trc', default);

image 


查詢執行時間大於3秒以上的資料

use ricotest
select serial,databasename,textdata,duration,cpu,rowcounts,starttime,endtime,reads,writes 
from tsql_trc
where databasename='ricotest'
and duration >=3000 

image

 

 

參考

fn_trace_gettable (Transact-SQL)