使用SQL語句實現SQL Profiler的功能

來源:互聯網
上載者:User

      SQL Profiler是個好東西。極大的方便了我們查看SQL語句的執行情況,也能協助我們瞭解SQL的很多內部狀態。那麼除了運行SQL Profiler就沒有其他方法可以實現了嗎?當然不會,這裡提供一個簡單的樣本以示說明:

1. 使用系統預存程序sp_trace_create建立一個Trace,這個SP可以在on-line help上找到

DECLARE @TraceIdOut int, @On bit, @rc int
-- Define the trace
exec @rc = sp_trace_create @TraceIdOut OUTPUT, 2, N'c:/sqlauditfile1'  --最後一個參數是最終Trace結果存放的位置
print @TraceIdOut  --列印Trace ID的目的是當需要停止該Trace時好知道該挺哪個

2. 使用系統預存程序sp_trace_setevent告知SQL所要監聽的事件以及事件返回的資訊,同樣具體參數參看on-line help

SET @On = 1
exec sp_trace_setevent @TraceIdOut, 13, 1, @On --最後一個參數表明開始監聽,這裡很是奇特,該參數是bit型,但是直接傳1不行,必須是一個bit型的變數。。。

--這個例子監聽的是SQL:BatchCompleted事件,返回的是SQL最終執行的語句(TextData)

--如果想監聽多個事件,或者需要返回多個資訊,那麼就多次執行該語句(不同的參數哦)

3. 使用系統預存程序sp_trace_setstatus讓指定Trace開始運行
exec @rc = sp_trace_setstatus @TraceIdOut, @status = 1 

4.開始執行一些SQL語句。

 

5.執行差不多了,再次使用系統預存程序sp_trace_setstatus來停止Trace,並且關閉和刪除這個Trace。

exec sp_trace_setstatus 1,0  --停止Trace
exec sp_trace_setstatus 1,2  --關閉和刪除Trace

(

SELECT * FROM sys.traces  

id

int

追蹤識別碼。

status

int

追蹤狀態:

0 = 已停止

1 = 執行中

使用 sp_trace_setstatus 預存程式來停止某個追蹤,語法如下:

                                                                         
sp_trace_setstatus <欲停止追蹤的追蹤識別碼>, 0 

EG:

--print @TraceIdOut
--SELECT * FROM sys.traces  
--exec sp_trace_setstatus 2,0  --停止Trace
--exec sp_trace_setstatus 2,2  --關閉和刪除Trace

之後則可以刪除產生的追蹤檔案

)

6.發現C盤下多了第一步建立的檔案,用SQL Profilter開啟看看吧。。。

注意:

1.如果不執行第5步,那麼第一步建立的檔案是打不開的。

2.SQL好像不能自行刪除檔案,也就是說如果檔案存在,需要手工先行刪除。

3.第一步列印Trace ID的目的是為了最後一步用,因為不在一起執行。。。

4.可以建立兩個任務,第一個是一早執行,開始一個Trace;第二個是晚上執行,關閉Trace。那麼客戶一天的SQL語句執行情況都知道了。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.