使用 SQL Server Profiler的第一步是確定監視 SQL Server 實例的原因。本主題討論使用 SQL Server Profiler收集跟蹤信息的典型方案。
使用 SQL Server Profiler的典型方案包括:
- 查找執行情況最差的查詢。
例如,可以創建一個捕獲與 TSQL 和 Stored Procedure 事件類(RPC:Completed 和 SQL:BatchCompleted)相關的事件的跟蹤。在此跟蹤中包括所有數據列,按 Duration 分組並指定事件準則。例如,如果指定事件的 Duration 必須至少爲 10000 微秒,則可以從跟蹤中清除持續時間較短的事件。可以根據需要增大 Duration 的最小值。如果希望一次僅監視一個數據庫,請指定 Database ID 事件標準的值。
- 確定死鎖的原因。
例如,可以創建一個捕獲與 TSQL 和 Stored Procedure 事件類(RPC:Starting 和 SQL:BatchStarting)和 Locks 事件類(Deadlock graph、Lock:Deadlock 或 Lock:DeadlockChain)相關的事件的跟蹤。在此跟蹤中包括所有數據列並按 Event Class 分組。如果希望一次僅監視一個數據庫,請指定 Database ID 事件標準的值。如果指定 Deadlock graph 事件類,SQL Server Profiler將生成圖形化表示形式的死鎖。有關詳細信息,請參閱使用 SQL Server Profiler 分析死鎖。
若要查看死鎖中涉及的連接,請執行下列操作之一:
- 打開包含捕獲的數據的跟蹤,按 ClientProcessID 對數據進行分組並展開死鎖中涉及的兩個連接。
- 將捕獲的數據保存到跟蹤文件中,然後兩次打開此跟蹤文件,使其出現在兩個單獨的 SQL Server Profiler窗口中。按 ClientProcessID 對捕獲的數據進行分組,然後展開死鎖中涉及的客戶端進程 ID;每個死鎖的連接將出現在一個單獨的窗口中。平鋪這兩個窗口以查看導致死鎖的事件。如果要將特定死鎖圖形數據保存到文件,請右鍵單擊死鎖事件並選擇“提取事件數據”。
- 監視存儲過程性能。
例如,可以創建一個捕獲與 Stored Procedure 事件類(SP:Completed、SP:Starting、SP:StmtCompleted 和 SP:StmtStarting)和 TSQL 事件類(SQL:BatchStarting 和 SQL:BatchCompleted)相關的事件的跟蹤。在此跟蹤中包括所有必要的數據列並按 ClientProcessID 分組。如果希望一次只監視一個數據庫,請使用數據庫 ID 篩選器爲“數據庫 ID”事件標準指定一個值。同樣,如果希望一次只監視一個存儲過程,請使用對象 ID 篩選器爲“對象 ID”事件標準指定一個值。
- 審覈 SQL Server 活動。
例如,如果安全管理員經常需要了解登錄到服務器的用戶,則 SQL Server Profiler跟蹤可以提供登錄到服務器或從服務器註銷的用戶的完整記錄。而且,此信息可用於法律或技術目的。
創建跟蹤,並選擇 Audit Login 事件。若要返回適當的信息,請指定下列數據列:EventClass(默認選擇)、EventSubClass、LoginSID 和 LoginName。
- 監視每個用戶的 Transact-SQL 活動。
可以創建一個捕獲與 Sessions、ExistingConnection 和 TSQL 事件類相關的事件的跟蹤。在此跟蹤中包括所有數據列,不指定任何事件準則並按 DBUserName 對捕獲的事件進行分組。
- 收集用於壓力測試的事件典型示例。
SQL Server Profiler提供一個預定義的 TSQL_Replay 模板,此模板可用於迭代優化,例如基準測試。
- 收集通過數據庫引擎優化顧問優化物理數據庫設計的事件示例。
SQL Server Profiler提供一個預定義的優化模板,此模板收集跟蹤輸出中的相應 Transact-SQL 事件以用作數據庫引擎優化顧問中的工作負荷。