共用方式為


使用 SQL Server Profiler 檢視和分析追蹤

更新: 2006 年 12 月 12 日

使用 SQL Server Profiler 來檢視追蹤中已擷取的事件資料。SQL Server Profiler 顯示以定義的追蹤屬性為基礎的資料。分析 SQL Server 資料的方法之一,是將資料複製到另一個程式,例如 SQL Server 2005 或 Database Engine Tuning Advisor。如果追蹤內包含 Text 資料行,則 Database Engine Tuning Advisor 可以使用包含了 SQL 批次和遠端程序呼叫 (RPC) 事件的追蹤檔。如需詳細資訊,請參閱<微調實體資料庫設計>。為了確保能擷取正確的事件和資料行,以便用於 Database Engine Tuning Advisor,請使用 SQL Server Profiler 隨附的預先定義「微調」範本。

使用 SQL Server Profiler 開啟追蹤時,如果檔案是由 SQL Server Profiler 或「SQL 追蹤」系統預存程序建立,則追蹤檔案的副檔名不需要是 .trc。

ms175848.note(zh-tw,SQL.90).gif附註:
SQL Server Profiler 也可以讀取「SQL 追蹤」的 .log 檔案與泛用的 SQL 指令碼檔案。開啟副檔名不是 .log 的「SQL 追蹤」記錄檔,例如 trace.txt 時,請將檔案格式指定成 SQLTrace_Log

您可以設定 SQL Server Profiler 日期和時間的顯示格式,以協助追蹤分析。

疑難排解資料

使用 SQL Server Profiler,您可以使用 DurationCPUReadsWrites 資料行,對追蹤或追蹤檔分組,進行資料的疑難排解。例如,執行效率差或邏輯讀取作業數過高的查詢,可能需要進行資料的疑難排解。

可透過將追蹤儲存到資料表,並使用 Transact-SQL 來查詢事件資料而找出額外的資訊。例如,若要判斷有哪些 SQL:BatchCompleted 事件的等候時間過量,請執行以下陳述式:

SELECT  TextData, Duration, CPU
FROM    trace_table_name
WHERE   EventClass = 12 -- SQL:BatchCompleted events
AND     CPU < (Duration * 1000)
ms175848.note(zh-tw,SQL.90).gif附註:
在 SQL Server 2005 中,伺服器以百萬分之一秒為單位 (百萬分之一秒,或 10-6 秒) 報告事件的持續時間,以毫秒為單位 (千分之一秒,或 10-3 秒) 報告事件使用的 CPU 時間量。在 SQL Server 2000 中,伺服器同時以毫秒為單位報告持續時間和 CPU 時間。在 SQL Server 2005 中,SQL Server Profiler 圖形使用者介面依預設會以毫秒為單位來顯示 [持續時間] 資料行,但是當追蹤儲存到檔案或資料庫資料表時,會以百萬分之一秒為單位來寫入 [持續時間] 資料行值。

檢視追蹤時顯示物件名稱

如果想要顯示物件名稱而非物件識別碼 (Object ID),則必須同時擷取 Server NameDatabase IDObject Name 資料行。

如果選擇要以 Object ID 資料行分組,請一定要先將 Server NameDatabase ID 資料行分組,再以 Object ID 資料行來分組。同樣地,如果選擇要以 Index ID 資料行分組,請一定要先將 Server NameDatabase IDObject ID 資料行分組,再以 Index ID 資料行來分組。您必須採用這種分組順序,因為物件識別碼與索引識別碼在伺服器與資料庫 (以及在索引識別碼的物件) 之間並不是唯一的。

在追蹤中找出特定事件

若要在追蹤中尋找和分組事件,請遵循這些步驟:

  1. 建立您的追蹤。
    • 定義追蹤時,請擷取 Event ClassClientProcessIDStart Time 資料行,以及您想要擷取的其他資料行。如需詳細資訊,請參閱<如何:建立追蹤 (SQL Server Profiler)>。
    • 依照 Event Class 資料行來將擷取的資料分組,並把追蹤擷取到檔案或資料表中。若要將擷取的資料分組,請在 [追蹤屬性] 對話方塊的 [事件選取範圍] 索引標籤上,按一下 [組織資料行]。如需詳細資訊,請參閱<如何:組織追蹤內顯示的資料行 (SQL Server Profiler)>。
    • 啟動追蹤,並在超過指定的時間或所擷取的事件數已達上限後停止追蹤。
  2. 找出目標事件。
    • 開啟追蹤檔案或資料表,然後展開想要的事件類別節點;例如,Deadlock Chain。如需詳細資訊,請參閱<如何:開啟追蹤檔案 (SQL Profiler)>或<如何:開啟追蹤資料表 (SQL Server Profiler)>。
    • 搜尋整個追蹤資料直到您找到要查看的事件為止 (請使用 SQL Server Profiler 的 [編輯] 功能表上的 [尋找] 命令來協助您在追蹤中尋找值)。請注意位於追蹤事件之 ClientProcessIDStart Time 資料行的值。
  3. 在內容中顯示事件。
    • 顯示追蹤屬性,並以 ClientProcessID 資料行分組,而非以 Event Class 資料行。
    • 將您要檢視的每一個用戶端處理序識別碼節點展開。手動搜尋整個追蹤,或使用 [尋找] 直到您找出先前標註為目標事件之 [開始時間] 的值為止。這些事件與屬於每一個選取之用戶端程序識別碼的其他事件,會依時間先後順序顯示出來。例如,在追蹤內擷取的 [死結][死結鏈] 事件,會緊接在所展開之用戶端處理序識別碼內的 SQL:BatchStarting 事件後面出現。

要尋找任何已分組的事件可以使用相同的技術。您找到要搜尋的事件之後,請依 ClientProcessIDApplicationName 或是另一個事件類別來分組,以便按照事件的發生先後順序來檢視相關的活動。

請參閱

工作

如何:檢視已儲存的追蹤 (Transact-SQL)
如何:檢視篩選資訊 (SQL Server Profiler)
如何:檢視篩選資訊 (Transact-SQL)
如何:開啟追蹤檔案 (SQL Profiler)
如何:開啟追蹤檔案 (SQL Profiler)
如何:開啟追蹤資料表 (SQL Server Profiler)

其他資源

fn_trace_getinfo (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

變更的內容:
  • 更正<疑難排解資料>一節中使用 [持續時間] 資料行單位的程式碼範例。

2005 年 12 月 5 日

新增內容:
  • 在「疑難排解資料」這一節結尾新增附註,來討論追蹤事件中的 [持續時間] 資料行從毫秒變更為百萬分之一秒。
變更的內容:
  • 更正「疑難排解資料」這一節的程式碼範例,來補償 [持續時間] 資料行單位的變更 (從毫秒到百萬分之一秒)。