重新執行擷取資料庫測試助理中的追蹤

在資料庫測試助理 (DEA),您可以針對升級的測試環境重新執行擷取的追蹤檔案。 例如,請考慮在 SQL Server 2008 R2 上執行的生產工作負載。 工作負載的追蹤檔案必須重新執行兩次:一次在實際執行環境中執行相同版本的 SQL Server,第二次在具有升級目標 SQL Server 版本的環境中執行,例如 SQL Server 2016。

注意

重新執行追蹤需要您手動設定虛擬機器或實體電腦來執行 Distributed Replay 追蹤。 欲瞭解其他資訊,請查看 設定資料庫測試助理的 Distributed Replay

設定目標 1 的追蹤重新執行

首先,您需對目標 1 執行追蹤重新執行,這代表您現有的實際執行環境。

  1. 在 DEA 的左側導覽列中,選取箭頭圖示,然後在 [所有擷取] 頁面,選取 [新增擷取]。

    Create a replay in DEA

    注意

    Distributed Replay 控制器電腦需要您用來遠端連線的使用者帳戶權限。

  2. 在 [新增擷取] 頁面 [擷取詳細資料] 底下,輸入或選取下列資訊:

    • 重新執行名稱:輸入追蹤重新執行的名稱。

    • 來源追蹤格式:指定來源追蹤檔案的格式(Trace 或 XEvents)。

    • 來源檔完整路徑:指定來源追蹤檔案的完整路徑。 如果使用 DReplay,則檔案必須存在於做為 DReplay Controller 的電腦,而使用者帳戶需要檔案和資料夾的存取權限。

    • 重新執行工具:指定重新執行工具 (DReplay 或 InBuilt)。

    • 控制器機器名稱:指定做為 Distributed Replay Controller 的電腦名稱。

    • 重新執行追蹤位置:指定儲存與追蹤重新執行相關聯的追蹤檔案/XEvent 的路徑。

      注意

      針對 Azure SQL Database 或 Azure SQL 受控執行個體,您需要提供 Azure Blob 儲存體帳戶的 SAS URI。

  3. 驗證您已還原資料庫,請選取 [是,我已手動還原資料庫] 核取方塊。

  4. 在 [SQL Server 連線詳細數據]下,輸入或選取下列資訊:

    • 伺服器類型:指定 SQL Server 的類型(SqlServerAzureSqlDbAzureSqlManagedInstance)。
    • 伺服器名稱:指定 SQL Server 的伺服器名稱或 IP 位址。
    • 驗證類型‭‬:選取 [‭‬Windows‭‬] 作為驗證類型。
    • 資料庫名稱:輸入要啟動伺服器端追蹤之資料庫的名稱。 如果您未指定資料庫,則會在伺服器上的所有資料庫上擷取追蹤。
  5. 針對您的案例,選取或取消選取 [加密連線] 和 [信任伺服器憑證] 核取方塊。

    New Replay page

在目標 1 上啟動追蹤重新執行

  • 輸入或選取必要資訊後,請選取 [開始] 以起始追蹤重新執行。

    如果您輸入的資訊有效,即啟動 Distributed Replay 過程。 否則,具不正確資訊的文字輸入框會以紅色反白顯示。 請確定您的輸入值正確,然後選取 [開始]。

    Replay progress against target 1

    您可以視需要監視過程。 當重新執行完成時,DEA 會將結果儲存在您指定位置的檔案之中。

    Replay against target 1 complete

針對目標 2 執行追蹤重新執行

完成針對目標 1 執行追蹤重新執行之後,您需對第二個目標執行相同的動作,這代表預期的升級環境。

  1. 設定追蹤重新執行,這次使用與您的目標 2 環境相關聯的詳細資料。

  2. 在目標 2 上啟動追蹤重新執行。

    您可以視需要監視過程。 當重新執行完成時,DEA 會將結果儲存在您指定位置的檔案之中。

關於追蹤重新執行的常見問題集

問:我需要哪些安全性許可權,才能在目標伺服器上啟動重新執行擷取?

  • 在 DEA 應用程式中執行追蹤作業的 Windows 使用者,執行 SQL Server 的目標電腦必須具有系統管理員權限。 啟動追蹤需要這些使用者權限。
  • 在執行 SQL Server 的目標電腦上所使用的服務帳戶必須具有指定追蹤檔案路徑的寫入權限。
  • 執行 Distributed Replay 用戶端服務的服務帳戶必須具有使用者權限,才能連線到執行 SQL Server 並執行查詢的目標電腦。

問:我可以在同一個工作階段中啟動多個重新執行嗎?

是,您可以啟動多個重新執行,並在相同的工作階段中完成追蹤。

問:我可以平行啟動多個重新執行嗎?

是,但不是與 [控制器和用戶端] 中選取的相同電腦組。 控制器和用戶端將處於忙碌。 在 [控制器和用戶端] 設定一組單獨的電腦,啟動平行重新執行。

問:重新執行通常需要多久才能完成?

重新執行通常需要與來源追蹤相同的時間量,以及前置處理來源追蹤所需的時間量。 不過,如果向控制器註冊的用戶端電腦不足以管理重新執行所產生的負載,重新執行可能需要較長的時間才能完成。 您最多可以向控制器註冊 16 部用戶端電腦。

問:目標追蹤檔案有多大?

目標追蹤檔案的大小可以是來源追蹤大小的 5 到 15 倍。 檔案大小是依據執行查詢的數量。 例如,查詢計劃 blob 可能很大。 如果這些查詢的統計資料經常變更,則會擷取更多事件。

問:為什麼我需要還原資料庫?

SQL Server 是可設定狀態的的關聯式資料庫管理系統。 欲正確執行 A/B 測試,資料庫的狀態必須隨時保留。 否則,您可能會在重新執行期間看到查詢中不會出現在實際執行中的錯誤。 欲避免這些錯誤,建議您在來源擷取之前立即進行備份。 同樣地,在執行 SQL Server 的目標電腦上還原備份,避免重新執行期間發生錯誤。

問:重新執行頁面上的「傳遞 %」是什麼意思?

傳遞 % 表示只傳遞的查詢百分比。 您可以診斷是否預期的錯誤數目。 錯誤可能是預期的,或可能會因為資料庫遺失其完整性而發生錯誤。 如果傳遞 % 不是您所預期的值,您可以停止追蹤,並查看 SQL 分析工具中的追蹤檔案,以查看哪些查詢未成功。

問:如何查看重新執行期間收集的追蹤事件?

開啟目標追蹤檔案,並在 SQL 分析工具中檢視。 或者,如果您想要修改重新執行擷取,所有 SQL Server 指令都可在 C:\Program Files (x86)\Microsoft Corporation\Database Experimentation Assistant\Scripts\StartReplayCapture.sql 取得。

問:DEA 在重新執行期間收集哪些追蹤事件?

DEA 會擷取內含效能相關資訊的追蹤事件。 擷取設定位於 StartReplayCaptureTrace.sql 指令之中。 這些事件是 sp_trace_setevent (Transact-SQL) 文件中所列的一般 SQL Server 追蹤事件。

針對追蹤重新執行進行疑難排解

問:為什麼我無法連線至執行 SQL Server 的電腦?

  • 確定正在執行 SQL Server 的電腦名稱有效。 欲確認,請嘗試使用 SQL Server Management Studio (SSMS) 連線到伺服器。
  • 請確認防火牆設定沒有封鎖執行 SQL Server 電腦的連線。
  • 請確認使用者具有必要的使用者權限。
  • 請確認 Distributed Replay 用戶端的服務帳戶具有權限執行 SQL Server 的電腦。

您可以在 %temp%\DEA 的記錄中取得其他詳細資料。 如果問題持續存在,請連絡產品團隊。

問:為什麼我無法連線到 Distributed Replay 控制器?

  • 驗證 Distributed Replay 控制器服務正在控制機器上執行。 欲驗證,請使用 Distributed Replay 管理工具(執行命令 dreplay.exe status -f 1)。
  • 如果遠端啟動重新執行:
    • 請確認執行 DEA 的電腦可以成功偵測控制器。 請確認防火牆設定允許依 [設定重新執行環境] 頁面上每個指示進行連線。 如需其他詳細資訊,請參閱 SQL Server Distributed Replay 一文。
    • 請確定 Distributed Replay 控制器的使用者允許 DCOM 遠端啟動和遠端啟用。
    • 請確定 Distributed Replay 控制器的使用者允許 DCOM 遠端存取使用者權限。

問:我電腦上存在追蹤檔案路徑。 為什麼 Distributed Replay 控制器找不到?

Distributed Replay 只能存取本機磁碟資源。 您必須先將來源追蹤檔案複製到 Distributed Replay 控制機器,才能開始重新執行。 此外,您必須在 [DEA 新增重新執行] 頁面上提供路徑。

UNC 路徑與 Distributed Replay 不相容。 Distributed Replay 路徑必須是第一個來源追蹤檔案的本機絕對路徑,包括延伸項目。

問:為什麼我無法在 [新增重新執行] 頁面上瀏覽檔案?

由於我們無法瀏覽遠端電腦上的資料夾,因此瀏覽檔案並無用處。 複製並貼上絕對路徑會更有效率。

問:我已開始使用追蹤重新執行,但 Distributed Replay 並未重新執行任何事件。 為什麼?

此問題可能會發生,是因為追蹤檔案沒有可重新執行的事件,或有如何重新執行事件的相關資訊。 請確認提供的追蹤檔案路徑是否指向來源追蹤檔案。 來源追蹤檔案是使用 StartCaptureTrace.sql 指令中提供的設定所建立。

問:當我嘗試使用 SQL Server 2017 Distributed Replay 控制器預先處理追蹤檔案,會看到「非預期錯誤!」。 為什麼?

此問題在 SQL Server 2017 的 RTM 版本中已知。 如需其他詳細資訊,請參閱 使用 DReplay 功能重新執行 SQL Server 2017 中擷取追蹤時發生非預期錯誤

此問題已在 SQL Server 2017 的最新累積更新 1 中解決。 下載 SQL Server 2017 累積更新的最新版本。

另請參閱

  • 欲建立可協助您深入解析建議變更的分析報告,請參閱 建立報告