適用於: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)。
依 事件類別 數據行分組擷取的數據,並將追蹤擷取至檔案或數據表。 若要將擷取的數據分組,請在 [追蹤屬性] 對話方塊的 [事件選取] 索引標籤上選取 [整理欄位]。 如需詳細資訊,請參閱排列追蹤中顯示的欄位(SQL Server Profiler)。
啟動追蹤,並在超過指定的時間或所擷取的事件數已達上限後停止追蹤。
找出目標事件。
開啟追蹤檔案或資料表,然後展開想要的事件類別節點;例如, Deadlock Chain。 如需詳細資訊,請參閱開啟追蹤檔案 (SQL Server Profiler) 或開啟追蹤數據表 (SQL Server Profiler)。
搜尋追蹤數據,直到您找到要尋找的事件為止(在 SQL Server Profiler 的 [編輯] 選單上使用 [尋找] 命令,協助您在追蹤中尋找值)。 請注意您追蹤事件時,ClientProcessID 和 Start Time 資料行中的值。
在上下文中顯示事件。
顯示追蹤屬性,並依 ClientProcessID 資料行分組,而不是依 事件類別 數據行分組。
展開您想檢視的每個客戶端處理序識別碼節點。 手動搜尋追蹤,或使用 [尋找] ,直到您找到先前注意到的目標事件的 [開始時間] 值為止。 這些事件與屬於每一個選取之用戶端程序識別碼的其他事件,會依時間先後順序顯示出來。 例如,在追蹤內擷取的 死結 和 死結鏈 結事件會在展開的客戶端進程標識碼內的 SQL:BatchStarting 事件之後立即出現。
要尋找任何已分組的事件可以使用相同的技術。 您找到要搜尋的事件之後,請依 ClientProcessID、 ApplicationName或是另一個事件類別來分組,以便按照事件的發生先後順序來檢視相關的活動。