使用 SQL Server Profiler 檢視和分析追蹤
適用於:SQL Server Azure SQL 受控執行個體
使用 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 追蹤」 .log 檔 (例如 trace.txt) 時,請將檔案格式指定成 SQLTrace_Log 。
您可以設定 SQL Server Profiler 日期和時間的顯示格式,以協助追蹤分析。
疑難排解資料
使用 SQL Server Profiler,您可以使用 Duration、CPU、Reads 或 Writes 資料行來分組追蹤或追蹤檔案,以針對資料進行疑難排解。 例如,執行效率差或邏輯讀取作業數過高的查詢,可能需要進行資料的疑難排解。
可透過將追蹤儲存到資料表,並使用 Transact-SQL 來查詢事件資料而找出額外的資訊。 例如,若要判斷有哪些 SQL:BatchCompleted 事件的等候時間過量,請執行以下陳述式:
SELECT TextData, Duration, CPU
FROM trace_table_name
WHERE EventClass = 12 -- SQL:BatchCompleted events
AND CPU < (Duration * 1000)
注意
伺服器會以微秒為單位 (10^-6 秒) 報告事件的持續時間,並以毫秒為單位 (10^-3 秒) 報告事件使用的 CPU 時間量。 SQL Server Profiler 圖形化使用者介面預設會以毫秒為單位來顯示 Duration 資料行,但是當追蹤儲存到檔案或資料庫資料表時,會以百萬分之一秒為單位來寫入 Duration 資料行值。 這些量值適用於 Transact-SQL (T-SQL) 查詢。
檢視追蹤時顯示物件名稱
如果想要顯示物件名稱而非物件識別碼 (Object ID),則必須同時擷取 Server Name 、 Database ID 與 Object Name 資料行。
如果選擇要以 Object ID 資料行分組,請一定要先將 Server Name 與 Database ID 資料行分組,再以 Object ID 資料行來分組。 同樣地,如果選擇要以 Index ID 資料行分組,請一定要先將 Server Name、 Database ID與 Object ID 資料行分組,再以 Index ID 資料行來分組。 您必須採用這種分組順序,因為物件識別碼與索引識別碼在伺服器與資料庫 (以及在索引識別碼的物件) 之間並不是唯一的。
在追蹤中找出特定事件
若要在追蹤中尋找和分組事件,請遵循這些步驟:
建立您的追蹤。
定義追蹤時,請擷取 Event Class、 ClientProcessID與 Start Time 資料行,以及您想要擷取的其他資料行。 如需詳細資訊,請參閱建立追蹤 (SQL Server Profiler)。
依照 Event Class資料行來將擷取的資料分組,並將追蹤擷取到檔案或資料表中。 若要將擷取的資料分組,請在 [追蹤屬性] 對話方塊的 [事件選取範圍] 索引標籤上,按一下 [組織資料行]。 如需詳細資訊,請參閱組織追蹤內顯示的資料行 (SQL Server Profiler)。
啟動追蹤,並在超過指定的時間或所擷取的事件數已達上限後停止追蹤。
找出目標事件。
開啟追蹤檔案或資料表,然後展開想要的事件類別節點;例如, Deadlock Chain。 如需詳細資訊,請參閱 開啟追蹤檔案 (SQL Server Profiler) 或 開啟追蹤資料表 (SQL Server Profiler) 隨附的預先定義「微調」範本。
搜尋整個追蹤資料直到您找到要查看的事件為止 (請使用 SQL Server Profiler 的 [編輯] 功能表上的 [尋找] 命令來協助您在追蹤中尋找值)。 請注意位於追蹤事件之 ClientProcessID 與 Start Time 資料行的值。
在內容中顯示事件。
顯示追蹤屬性,並以 ClientProcessID資料行分組,而非以 Event Class 資料行。
將您要檢視的每一個用戶端處理序識別碼節點展開。 手動搜尋整個追蹤,或使用 [尋找] 直到您找出先前標註為目標事件之 [開始時間] 的值為止。 這些事件與屬於每一個選取之用戶端程序識別碼的其他事件,會依時間先後順序顯示出來。 例如,在追蹤內擷取的 Deadlock 和 Deadlock Chain事件,會緊接在所展開之用戶端處理序識別碼內的 SQL:BatchStarting事件後面出現。
要尋找任何已分組的事件可以使用相同的技術。 您找到要搜尋的事件之後,請依 ClientProcessID、 ApplicationName或是另一個事件類別來分組,以便按照事件的發生先後順序來檢視相關的活動。