通過SQL Server—>Tools—>SQL Server Profiler啟動
注:激活SQL Profiler跟蹤約損耗1/7的性能,所以要謹慎使用。
1,通用頁:
跟蹤的記錄有兩種保存方式:保存到文件和保存到表。
通常選擇保存到文件,不要把跟蹤直接寫入到表,這樣會嚴重影響性能,把文件寫到與數據庫位置不同的磁盤是最快的方案。
2,模塊選擇:
Standard:創建跟蹤的通用起點。捕獲所運行的全部存儲過程和 Transact-SQL 批處理。用於監視常規數據庫服務器活動。
TSQL:捕獲客戶端提交給 SQL Server 的所有 Transact-SQL 語句及其發出時間。用於調試客戶端應用程序。
TSQL_Duration:捕獲客戶端提交給 SQL Server 的所有 Transact-SQL 語句及其執行時間(以毫秒位單位),並按持續時間對其進行分組。用於識別執行速度慢的查詢。TSQL_Grouped:捕獲提交給 SQL Server 的所有 Transact-SQL 語句及其發出時間。信息按提交語句的用戶或客戶端分組。用於調查某客戶端或用戶發出的查詢。TSQL_Locks:捕獲客戶端與異常鎖事件一起提交到 SQL Server 的 Transact-SQL 語句。用於排除死鎖、鎖超時和鎖升級事件的故障。TSQL_Replay:捕獲重播跟蹤所需的 Transact-SQL 語句的詳細信息。用於執行迭代優化,例如基准測試。
3,事件選擇:
若多是存儲過程,則跟蹤SP:Completed事件,若存儲過程有很多操作,查看明細要跟蹤SP:StmtCompleted.若程序多是sql語句,則跟蹤SQL:BatchCompleted與 SQL:StmtCompleted事件在事件選擇版塊上點擊列名,可以進行篩選,如指定數據庫篩選:DataBaseName 類似於brm_lvjian_new.
4,1) 文件導出腳本,包裝成一個存儲過程 ,在此存儲過程中 print @traceid
2)執行此存儲過程,根據打印出的@traceid來控制跟蹤的執行與停止,之所以不用profiler的GUI界面,第一是profiler不便於分析,並且需要將數據寫入到GUI,性能也不高。運行:EXEC [WorkTraceStart] 'brm_lvjian_new',@tracefile='d:\mytrace'
3)控制跟蹤:執行: EXEC sp_trace_setstatus @traceid, [0|1|2] 0: 停止 1:啟動 2:刪除 注:在執行2)的存儲過程後,裡面有一個 EXEC sp_trace_setstatus @traceid, 1; 將啟動跟蹤。 查看跟蹤:sys.traces
4,分析保存的跟蹤文件
1)導入select CAST(textdata as nvarchar(max)) as tsql_code,durationinto Workloadfrom sys.fn_trace_gettable('C:\test\performancetrace_20100802.trc',NULL) as TT
2)分析select convert(varchar(60),tsql_code),sum(duration) s,avg(duration) t
from workloadwhere duration >=3000 --一般是執行時間在3秒以上的
group by convert(varchar(60),tsql_code)
order by s desc