[SQL]使用SQL Server Profiler錄Trigger執行的SQL

[SQL]使用SQL Server Profiler錄Trigger執行的SQL

前言

今天幫同事看問題時,因為有些事在Table的Trigger中執行,但好像沒有Run到!

於是使用SQL Server Profiler來錄看看執行Trigger的情形如何!

實作

執行步驟如下,

1.執行SQL Server Profiler,如下圖,

1default

2.勾選「Show all events」

3.選取「Stored Procedures」Event中的「SP:StmtCompleted」及「SP:StmtStarting」,如下圖,

23Stmt

經過以上的設定後,就不儘可以錄Trigger還可錄到Function及Store Procedure內的SQL哦!

另外,筆者再分享使用SQL Server Profiler的方式!

1.勾選「Show all columns」

2.勾選「RowCounts」欄位(受到事件影響的資料列數目),可以看這個SQL影響多少資料,如下圖,

3RowCounts

3.如果只要錄某個DB的話,就可以針對DatabaseName做篩選,按下「Column Filter...」Button,設定「DatabaseName」來篩選,如下圖,

4_dataBaseName

4.有時我們可能想知道那些SQL花比較多時間,其他不花時間的SQL就不要顯示出來,這時我們可以透過設定「Duration」來篩選花超過某個時間的SQL才顯示,這時我就會設定Duration>1,如下圖,

4_2Duration

5.如果ConnectionString中有設定Application Name的話,如(Data Source=localhost;Initial Catalog=YOURDB;User Id=rm;Password=rmok;Connect Timeout=15;Application Name=RMAP),就可以依ApplicationName來篩選,如下圖,

4AppName

6.如果只想針對MSSM執行的SQL去錄的話,也能使用「SPID」來篩選,如下圖,

5.spid

結論

以上如果要錄Trigger時,就不要篩選Application Name哦! 因為Trigger不是透過我們的AP去執行的哦!

針對您要Trace的欄位及事件,請依需求再勾選調整它哦!

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^