共用方式為


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

可以使用 SQL Server Profiler 來檢視追蹤中擷取的事件資料。 SQL Server Profiler 會根據定義的追蹤屬性來顯示資料。 分析 SQL Server 資料的方法之一,是將資料複製到另一個程式,例如 SQL Server 或 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。

[!附註]

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)

[!附註]

從 SQL Server 2005 開始,伺服器會以百萬分之一秒為單位 (百萬分之一秒,或 10-6 秒) 報告事件的持續時間,以毫秒為單位 (千分之一秒,或 10-3 秒) 報告事件使用的 CPU 時間量。 在 SQL Server 2005 及更新的版本中,SQL Server Profiler 圖形化使用者介面依預設會以毫秒為單位來顯示 Duration 資料行,但是當追蹤儲存到檔案或資料庫資料表時,會以百萬分之一秒為單位來寫入 Duration 資料行值。

檢視追蹤時顯示物件名稱

如果想要顯示物件名稱而非物件識別碼 (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 Server Profiler)>或<開啟追蹤資料表 (SQL Server Profiler)>。

    • 搜尋整個追蹤資料直到您找到要查看的事件為止 (請使用 SQL Server Profiler 的 [編輯] 功能表上的 [尋找] 命令來協助您在追蹤中尋找值)。 請注意位於追蹤事件之 ClientProcessIDStart Time資料行的值。

  3. 在內容中顯示事件。

    • 顯示追蹤屬性,並以 ClientProcessID資料行分組,而非以 Event Class 資料行。

    • 將您要檢視的每一個用戶端處理序識別碼節點展開。 手動搜尋整個追蹤,或使用 [尋找] 直到您找出先前標註為目標事件之 [開始時間] 的值為止。 這些事件與屬於每一個選取之用戶端程序識別碼的其他事件,會依時間先後順序顯示出來。 例如,在追蹤內擷取的 DeadlockDeadlock Chain 事件,會緊接在所展開之用戶端處理序識別碼內的 SQL:BatchStarting 事件後面出現。

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

請參閱

工作

檢視已儲存的追蹤 (Transact-SQL)

檢視篩選資訊 (SQL Server Profiler)

檢視篩選資訊 (Transact-SQL)

開啟追蹤檔案 (SQL Server Profiler)

開啟追蹤資料表 (SQL Server Profiler)

參考

sys.fn_trace_getinfo (Transact-SQL)