適用於: SQL Server 2016 (13.x)
SQL Server 2017 (14.x)
SQL Server 2019 (15.x)
重要
SQL Server 分散式重播在 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) 或獨立調整 (Connection)。 | 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 完成之前,用於資料庫重播目標的 "Batch Requests/sec" 效能監視計數器降至零。
如果您需要使用同步處理模式,並且想要避免此行為,您必須執行下列動作:
請暫停運行您將用作重新執行目標的資料庫。
讓所有擱置中的活動完成執行。
備份資料庫,並允許備份完成。
開始 Distributed Replay 追蹤擷取,並恢復正常工作負載。