擷取資料庫測試助理中的追蹤
注意
此工具將於 2024 年 12 月 15 日淘汰。 我們將停止針對任何發生的問題支援此工具,而且不會發出任何錯誤修正或進一步更新。
使用資料庫測試助理 (DEA) 建立具擷取伺服器事件記錄的追蹤檔案。 擷取的伺服器事件是在特定時間週期中特定伺服器上發生的事件。 每部伺服器必須執行一次追蹤擷取。
開始追蹤擷取之前,請確定您備份所有目標資料庫。
SQL Server 中的查詢快取可能會影響評估結果。 建議您在服務應用程式中重新啟動 SQL Server 服務 (MSSQLSERVER),改善評估結果的一致性。
設定追蹤擷取
在 DEA 的左側導覽列中,選取相機圖示,然後在 [所有擷取] 頁面,選取 [新增擷取]。
在 [新增擷取] 頁面中 [擷取詳細資料] 下,輸入或選取下列資訊:
擷取名稱:輸入擷取追蹤檔案的名稱。
格式:指定擷取的格式(Trace 或 XEvents)。
持續時間:選取想要執行追蹤擷取的時間長度(以分鐘為單位)。
擷取位置:選取追蹤檔案的目的地路徑。
注意
追蹤檔案的檔案路徑必須在執行 SQL Server 的電腦。 如果未針對特定帳戶設定 SQL Server 服務,服務可能需要寫入指定資料夾的寫入權限,才能寫入追蹤檔案。
選取 [是,我已手動備份…] 核取方塊,以驗證您已進行備份。
在 [擷取詳細資料] 下,輸入或選取下列資訊:
- 伺服器類型:指定 SQL Server 的類型(SqlServer、AzureSqlDb、AzureSqlManagedInstance)。
- 伺服器名稱:指定 SQL Server 的伺服器名稱或 IP 位址。
- 驗證類型:選取 [Windows] 作為驗證類型。
- 資料庫名稱:輸入要啟動資料庫追蹤之資料庫的名稱。 如果您未指定資料庫,則會在伺服器上的所有資料庫上擷取追蹤。
針對您的案例,選取或取消選取 [加密連線] 和 [信任伺服器憑證] 核取方塊。
啟動追蹤擷取
輸入或選取必要資訊後,請選取 [開始] 以起始追蹤擷取。
如果您輸入的資訊有效,追蹤擷取過程就會開始。 否則,具有無效項目的文字輸入框會以紅色反白顯示。 如果您遇到錯誤,請更正任何必要的項目,然後再次選取 [開始]。
當追蹤擷取正在執行時,會在 [擷取詳細數據] 下顯示追蹤擷取過程的狀態和進度。
當完成執行追蹤擷取,新的追蹤 (.trc) 檔案會儲存在您初始設定期間特定的 [擷取位置]。
追蹤檔案包括 SQL Server 資料庫活動的追蹤結果。 .trc 檔案的設計旨於提供關於 SQL Server 偵測和報告之錯誤的詳細資訊。
關於追蹤擷取的常見問題集
以下是關於 DEA 中追蹤擷取的一些常見問題。
問:當我在實際執行資料庫上執行追蹤擷取時,會擷取哪些事件?
下表列出 DEA 針對追蹤收集的事件和對應的資料行:
事件名稱 | 文字資料 (1) | 二進位資料 (2) | 資料庫 ID (3) | 主機名稱 (8) | 應用程式名稱 (10) | 登入名稱 (11) | SPID (12) | 開始時間 (14) | 結束時間 (15) | 資料庫名稱 (35) | 事件順序 (51) | IsSystem (60) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
RPC:完成(10) | * | * | * | * | * | * | * | * | * | * | * | |
RPC:開始(11) | * | * | * | * | * | * | * | * | * | * | ||
RPC 輸出參數 (100) | * | * | * | * | * | * | * | * | * | * | ||
SQL:BatchCompleted (12) | * | * | * | * | * | * | * | * | * | * | * | |
SQL:BatchStarting (13) | * | * | * | * | * | * | * | * | * | * | ||
稽核登入 (14) | * | * | * | * | * | * | * | * | * | * | * | |
稽核登出 (15) | * | * | * | * | * | * | * | * | * | * | * | |
ExistingConnection (17) | * | * | * | * | * | * | * | * | * | * | * | |
CursorOpen (53) | * | * | * | * | * | * | * | * | * | * | ||
CursorPrepare (70) | * | * | * | * | * | * | * | * | * | * | ||
Prepare SQL (71) | * | * | * | * | * | * | * | * | * | |||
Exec Prepared SQL (72) | * | * | * | * | * | * | * | * | * | |||
CursorExecute (74) | * | * | * | * | * | * | * | * | * | * | ||
CursorUnprepare (77) | * | * | * | * | * | * | * | * | * | * | ||
CursorClose (78) | * | * | * | * | * | * | * | * | * | * |
問:追蹤擷取執行時,我的實際執行伺服器是否有效能影響?
是,追蹤收集期間效能影響最小。 在我們的測試中,發現大約 3% 的記憶體壓力。
問:在實際執行工作負載上擷取追蹤需要何種權限?
- 在 DEA 應用程式中執行追蹤操作的 Windows 使用者,執行 SQL Server 的電腦必須具有系統管理員權限。
- 在執行 SQL Server 的電腦上所使用的服務帳戶必須具有指定追蹤檔案路徑的寫入權限。
問:我可以擷取整個伺服器的追蹤,還是只能在單一資料庫上擷取追蹤嗎?
您可以使用 DEA 來擷取伺服器中的所有資料庫或單一資料庫的追蹤。
問:我已在實際執行環境中設定連結的伺服器。 這些查詢是否顯示在追蹤中?
如果您正在執行整個伺服器的追蹤擷取,追蹤會擷取所有查詢,包括連結的伺服器查詢。 欲執行整個伺服器的追蹤擷取,請將 [新增擷取] 下的 [資料庫名稱] 方塊留白。
問:實際執行工作負載追蹤的最低建議時間為何?
我們建議選擇最能代表您的全部工作負載的時間。 如此一來,分析就會在工作負載中的所有查詢上執行。
問:在開始追蹤擷取前,先進行資料庫備份有多重要?
開始追蹤擷取之前,請確定您備份所有目標資料庫。 目標 1 和目標 2 中擷取的追蹤會重新執行。 如果資料庫狀態不相同,實驗的結果就會出現偏差。
問:我可以收集 XEvents 而非追蹤,是否可以重新執行 XEvents?
是。 DEA 支援 XEvents。 下載最新版本的 DEA,並試試看。
針對追蹤擷取進行疑難排解
如果您在執行追蹤擷取時看到錯誤,請確認:
- 執行 SQL Server 之電腦的名稱有效。 欲確認,請嘗試使用 SQL Server Management Studio (SSMS) 連線到執行 SQL Server 的電腦。
- 您的防火牆設定不會封鎖執行 SQL Server 之電腦的連線。
- 使用者具有 [重新執行常見問題] 中列出的權限。
- 追蹤名稱未遵循標準變換慣例 (Capture_1)。 請改為嘗試 Capture_1A 或 Capture1 之類的追蹤名稱。
以下是您可能會看到的一些可能錯誤,以及解決這些錯誤的解決方案:
可能錯誤 | 解決方案 |
---|---|
無法在目標 SQL Server 上啟動追蹤,請檢查您是否具有必要權限,且 SQL Server 帳戶是否具有指定追蹤檔案路徑 Sql 錯誤碼 (53) 的寫入權限 | 執行 DEA 工具的使用者必須能夠存取執行 SQL Server 的電腦。 使用者必須受指派系統管理員角色。 |
無法在目標 SQL Server 上啟動追蹤,請檢查您是否具有必要權限,且 SQL Server 帳戶是否具有指定追蹤檔案路徑 Sql 錯誤碼 (19062) 的寫入權限 | 指定的追蹤路徑可能不存在,或資料夾不具備執行 SQL Server 服務帳戶的寫入權限(例如:網絡服務)。 必須存在路徑,且必須具備啟動追蹤的必要權限。 |
目前在目標伺服器上執行 DEA 追蹤。 | 作用中追蹤已在目標伺服器上執行。 當伺服器範圍的追蹤已執行,即無法啟動新的追蹤。 |
無法開啟要求的資料庫來擷取追蹤。 這個錯誤可能是因為資料庫名稱不正確所造成。 | 指定的資料庫不存在,或目前使用者無法存取。 使用正確的資料庫名稱。 |
如果您看到任何其他標記為 [Sql 錯誤碼] 的錯誤,請參閱 [資料庫引擎 錯誤] 以取得詳細描述。
另請參閱
- 欲瞭解如何在 SQL Server 中設定 Distributed Replay 工具,再重新執行擷取追蹤,請參閱設定資料庫測試助理的 Distributed Replay。