設定 Distributed Replay
適用於: SQL Server 2016 (13.x)、 SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)
重要
SQL Server Distributed Replay 不適用於 SQL Server 2022 (16.x)。
Microsoft SQL Server Distributed Replay 設定詳細資料指定於 XML 檔案中,而 XML 檔案位於 Distributed Replay 控制器、用戶端以及已安裝管理工具的位置上。 這些檔案包括下列各項:
控制器組態檔:DReplayController.config
SQL Server Distributed Replay 控制器服務啟動時,會從控制器設定檔 DReplayController.config
中載入記錄層級。 這個檔案位於您安裝 Distributed Replay Controller 服務的資料夾中:
<控制器安裝路徑>\DReplayController.config
控制器組態檔所指定的記錄層次包括:
設定 | XML 元素 | 描述 | 允許的值 | 必要 |
---|---|---|---|---|
記錄層級 | <LoggingLevel> |
指定控制器服務的記錄層次。 | INFORMATION | WARNING | CRITICAL |
否。 根據預設,此值是 CRITICAL 。 |
範例
此範例會顯示已經修改為隱藏 INFORMATION
和 WARNING
記錄項目的控制器組態檔。
<?xml version='1.0'?>
<Options>
<LoggingLevel>CRITICAL</LoggingLevel>
</Options>
用戶端組態檔:DReplayClient.config
SQL Server Distributed Replay 用戶端服務啟動時,會從用戶端設定檔 DReplayClient.config
中載入組態設定。 這個檔案位於每個用戶端上您安裝 Distributed Replay Client 服務的資料夾中:
<用戶端安裝路徑>\DReplayClient.config
用戶端組態檔所指定的設定包括:
設定 | XML 元素 | 描述 | 允許的值 | 必要 |
---|---|---|---|---|
控制器 | <Controller> |
指定控制器的電腦名稱。 用戶端會嘗試連絡控制器,藉以向 Distributed Replay 環境註冊。 | 您可以使用 "localhost " 或 ". " 表示本機電腦。 |
否。 根據預設,用戶端會嘗試向本機執行的 Controller 執行個體 (". ") 註冊 (如果它存在的話)。 |
用戶端工作目錄 | <WorkingDirectory> |
這是在用戶端上儲存分派檔案的本機路徑。 下一次重新執行時,就會覆寫這個目錄中的檔案。 |
完整目錄名稱,以磁碟機代號為開頭。 | 否。 如果未指定值,則分派檔案與預設用戶端組態檔會儲存在相同的位置。 如果指定值,而且該資料夾不存在於用戶端上,則不會啟動用戶端服務。 |
用戶端結果目錄 | <ResultDirectory> |
這是在用戶端上儲存重新執行活動之結果追蹤檔案 (針對用戶端) 的本機路徑。 下一次重新執行時,就會覆寫這個目錄中的檔案。 |
完整目錄名稱,以磁碟機代號為開頭。 | 否。 如果未指定值,則結果追蹤檔案與預設用戶端組態檔會儲存在相同的位置。 如果指定值,而且該資料夾不存在於用戶端上,則不會啟動用戶端服務。 |
記錄層級 | <LoggingLevel> |
這是用戶端服務的記錄層次。 | INFORMATION | WARNING | CRITICAL |
否。 根據預設,此值是 CRITICAL 。 |
範例
此範例會顯示已經修改為指定控制器服務在不同電腦 (名為 Controller1
的電腦) 上執行的用戶端組態檔。 WorkingDirectory
和 ResultDirectory
項目已經分別設定成使用 c:\ClientWorkingDir
和 c:\ResultTraceDir
資料夾。 記錄層次已經從預設值變更為隱藏 INFORMATION
和 WARNING
記錄項目。
<?xml version='1.0'?>
<Options>
<Controller>Controller1</Controller>
<WorkingDirectory>c:\ClientWorkingDir</WorkingDirectory>
<ResultDirectory>c:\ResultTraceDir</ResultDirectory>
<LoggingLevel>CRITICAL</LoggingLevel>
</Options>
前置處理組態檔:DReplay.exe.preprocess.config
當您使用管理工具來起始前置處理階段時,管理工具就會從前置處理組態檔 DReplay.exe.preprocess.config
載入前置處理設定。
您可以使用預設組態檔,也可以使用管理工具的 -c 參數來指定已修改前置處理組態檔的位置。 如需使用管理工具之前置處理選項的詳細資訊,請參閱前置處理選項 (Distributed Replay 管理工具)。
預設前置處理組態檔位於您安裝管理工具的資料夾中:
<管理工具安裝路徑>\DReplayAdmin\DReplay.exe.preprocess.config
前置處理組態設定指定於前置處理組態檔中屬於 <PreprocessModifiers>
元素子系的 XML 元素中。 這些設定包括:
設定 | XML 元素 | 描述 | 允許的值 | 必要 |
---|---|---|---|---|
包含系統工作階段活動 | <IncSystemSession> |
指出是否要在重新執行期間包含擷取期間進行的系統工作階段活動。 | Yes | No |
否。 根據預設,此值是 No 。 |
最大閒置時間 | <MaxIdleTime> |
將閒置時間的上限設定為絕對數字 (以秒為單位)。 | >= -1 的整數。-1 表示沒有變更原始追蹤檔案的原始值。0 指出在任何給定時間點有某個活動正在進行。 |
否。 根據預設,此值是 -1 。 |
範例
預設前置處理組態檔:
<?xml version='1.0'?>
<Options>
<PreprocessModifiers>
<IncSystemSession>No</IncSystemSession>
<MaxIdleTime>-1</MaxIdleTime>
</PreprocessModifiers>
</Options>
重新執行組態檔:DReplay.exe.replay.config
當您使用管理工具來起始事件重新執行階段時,管理工具就會從重新執行組態檔 DReplay.exe.replay.config
載入重新執行設定。
您可以使用預設組態檔,也可以使用管理工具的 -c 參數來指定已修改重新執行組態檔的位置。 如需使用管理工具之重新執行選項的詳細資訊,請參閱重新執行選項 (Distributed Replay 管理工具)。
預設重新執行組態檔位於您安裝管理工具的資料夾中:
<管理工具安裝路徑>\DReplayAdmin\DReplay.exe.replay.config
重新執行組態設定指定於重新執行組態檔中屬於 <ReplayOptions>
和 <OutputOptions>
元素子系的 XML 元素中。
<ReplayOptions> 元素
重新執行組態檔在 <ReplayOptions>
元素中指定的設定如下:
設定 | XML 元素 | 描述 | 允許的值 | 必要 |
---|---|---|---|---|
目標 SQL Server 執行個體 (測試伺服器) | <Server> |
指定伺服器名稱以及要連線的 SQL Server 執行個體。 | server_name[\instance_name] 您無法使用 " localhost " 或 ". " 來代表本機主機。 |
否,如果已經搭配使用 -s目標伺服器 參數與管理工具的 [重新執行] 選項來指定伺服器名稱。 |
順序模式 | <SequencingMode> |
指定用於事件排程的模式。 | synchronization | stress |
否。 根據預設,此值是 stress 。 |
壓力規模粒度 | <StressScaleGranularity> |
指定服務設定檔識別碼 (SPID) 上的所有連接是應該在壓力模式下同時 (SPID) 還是個別 (連接) 調整。 | SPID | 連接 | 是。 根據預設,此值是 SPID 。 |
連接時間間隔 | <ConnectTimeScale> |
這是用來在壓力模式中設定連接時間的間隔。 | 介於 1 與 100 之間的整數。 |
否。 根據預設,此值是 100 。 |
考慮時間間隔 | <ThinkTimeScale> |
這是用來在壓力模式中設定考慮時間的間隔。 | 介於 0 與 100 之間的整數。 |
否。 根據預設,此值是 100 。 |
使用連接共用 | <UseConnectionPooling> |
指定是否要在每個 Distributed Replay Client 上啟用連接共用。 | 是 | 否 | 是。 根據預設,此值是 Yes 。 |
健全狀況監視器間隔 | <HealthmonInterval> |
表示要執行健全狀況監視器的頻率 (以秒為單位)。 此值只用於同步處理模式中。 |
整數 >= 1 ( -1 表示停用) |
否。 根據預設,此值是 60 。 |
查詢逾時 | <QueryTimeout> |
指定查詢逾時值 (以秒為單位)。 此值只在傳回第一個資料列之前有效。 | 整數 >= 1 ( -1 表示停用) |
否。 根據預設,此值是 3600 。 |
每個用戶端的執行緒 | <ThreadsPerClient> |
指定要用於每個重新執行用戶端的重新執行執行緒數目。 | 介於 1 與 512 之間的整數。 |
否。 如果未指定,則 Distributed Replay 會使用值 255 。 |
<OutputOptions> 元素
重新執行組態檔在 <OutputOptions>
元素中指定的設定如下:
設定 | XML 元素 | 描述 | 允許的值 | 必要 |
---|---|---|---|---|
記錄資料列計數 | <RecordRowCount> |
指出是否應該針對每個結果集記錄資料列計數。 | Yes | No |
否。 根據預設,此值是 Yes 。 |
記錄結果集 | <RecordResultSet> |
指出是否應該記錄所有結果集的內容。 | Yes | No |
否。 根據預設,此值是 No 。 |
範例
預設重新執行組態檔:
<?xml version='1.0'?>
<Options>
<ReplayOptions>
<Server></Server>
<SequencingMode>stress</SequencingMode>
<ConnectTimeScale></ConnectTimeScale>
<ThinkTimeScale></ThinkTimeScale>
<HealthmonInterval>60</HealthmonInterval>
<QueryTimeout>3600</QueryTimeout>
<ThreadsPerClient></ThreadsPerClient>
</ReplayOptions>
<OutputOptions>
<ResultTrace>
<RecordRowCount>Yes</RecordRowCount>
<RecordResultSet>No</RecordResultSet>
</ResultTrace>
</OutputOptions>
</Options>
使用同步處理排序模式執行時可能發生的問題
您可能會遇到重新執行功能似乎「停止運作」或重新執行事件緩慢這類徵兆。 如果正在重新執行的追蹤依賴不存在於已還原目標資料庫中的資料和 (或) 事件,則可能會發生這種現象。
其中一個例子是使用 WAITFOR 的已擷取工作負載,例如 Service Broker 的 WAITFOR RECEIVE 陳述式。 當使用同步處理排序模式時,會以序列順序重新執行批次。 如果您在資料庫備份之後,但在重新執行擷取追蹤開始之前,對來源資料庫執行 INSERT,則在重新執行期間發出的 WAITFOR RECEIVE 可能必須等候至 WAITFOR 完成執行才能繼續。 此時設定為在 WAITFOR RECEIVE 之後重新執行的事件便會停止運作。 這會導致在 WAITFOR 完成之前,重新執行資料庫目標的「批次要求/秒」效能監視計數器降至零。
如果您需要使用同步處理模式,並且想要避免此行為,您必須執行下列動作:
停止您將用來作為重新執行目標的資料庫。
讓所有擱置中的活動完成執行。
備份資料庫,並允許備份完成。
啟動 Distributed Replay 追蹤擷取並繼續正常工作負載。