随着菜鳥一點點的成熟,現在老鳥已經開始慢慢的将一些問題抛給他:“菜鳥,你去研究下如何有效而快捷的偵查sql執行狀态?”。
“鳥哥,你交代的任務,我分分鐘就去辦。”,菜鳥領了任務趕緊忙碌起來。
“其實這個場景經常遇到,比如:我們想知道某個程序的sql查詢執行到哪一步了?目前執行多久了?查詢是從哪個登入使用者哪一個機器過來的?跑的是什麼業務?甚至執行計劃是什麼樣子?老鳥就是老鳥,總想的比我們遠”。菜鳥一邊尋思着,一邊又馬不停蹄的問g哥,終于功夫不負有心人,總算有了點眉目。
利用一系列的常見系統視圖就可以很輕松的解決這個問題:
sys.dm_exec_requests:這個動态視圖可以拿到所有于執行請求的資訊
sys.dm_exec_sql_text:這個動态視圖可以拿到執行的語句和目前執行的語句
sys.dm_exec_query_plan:這個動态視圖可以拿到執行計劃
跑在59号程序的測試代碼
偵查59号程序的代碼如下:
執行結果如下(人為分成兩段):

當然我們也可以使用上一篇文章講到的sql profiler工具。但是,這種方法有個典型的缺點是對被跟蹤的sql server伺服器性能影響較大,不如使用動态視圖來得簡單友善快捷。