適用於: SQL Server 2025 (17.x) 預覽
max ucs send boxcars
使用伺服器組態選項來控制可用來將訊息從主要複本傳送至次要複本的 UCS Boxcar 數目上限。 此選項適用於透過廣域網控制 Always On 可用性群組 中複本之間的數據流。
備註
從 max ucs send boxcars
SQL Server 2025 (17.x) 預覽開始,即可使用伺服器組態選項。
概觀
SQL Server Always On 可用性群組 會使用通用通訊服務 (UCS) 通訊協定,在主要和次要複本之間傳送記錄區塊。 UCS 會測量主要復本接收在次要複本上強化變更所花費的時間,以判斷次要複本是否落後於主要複本。
當 UCS 在端點之間進行通訊時,若偵測到次要複本無法跟上從主要複本應用的變更,它便會進入 流量控制 模式。 這個過程在網路遲延不成問題的快速本地網路中運行良好,因為大部分的延遲都歸因於次要復本上的處理。 不過,當 UCS 通過廣域網(WAN)進行通訊時,若存在顯著的網路延遲,例如在異地複寫過程中,增加的延遲可能會導致次要複本落後。 在此案例中,流程控制效率不佳。
若要解決此網路延隔情況,UCS 必須推遲進入流量控制。 這可藉由變更可用來將訊息從主要複本傳送至次要複本的 UCS Boxcar 數目限制來達成。 UCS 封包會分組在 Boxcar 中,以允許透過網路進行更有效率的傳輸。 當您增加UCS Boxcar的最大數目時,可以一次傳輸更多封包,進而延遲進入流程控制。
使用 Windows 登錄覆寫 UCS Boxcars
從 SQL Server 2022 (16.x) 開始,您可以透過建立一個登錄值來控制 UCS boxcar 的數量,SQL Server 在初始化期間會讀取該值。
- 登錄機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.<instance_name>\MSSQLServer\ServiceBroker
- 值名稱:
MaxPendingSend
- 值類型:
REG_SZ
這很重要
您必須將值建立為 REG_SZ
而非 REG_DWORD
,因為 SQL Server 會檢查類型,如果不是預期的類型,則會忽略該值。
此機制有數個缺點:
資料庫管理員可能無法存取登錄,無論是在與 SQL Server 實例相同的計算機上,或從遠端存取。
資料庫管理員和系統管理員通常是具有不同責任集的兩個不同的角色,因此有不同的許可權集合。
使用 sp_configure 覆寫 UCS boxcars 配置
從 SQL Server 2025 (17.x)預覽版開始,您可以使用max ucs send boxcars
伺服器設定選項來控制 UCS Boxcar 的數量,並請考慮以下事項:
此設定是進階
sp_configure
選項。最小值為
256
(預設值),最大值為2048
。 不過,您可以使用0
的值來將值重設為預設值。此組態選項優先於登錄設定。
此設定會在 SQL Server 實例重新啟動之後生效。
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure `max ucs send boxcars`, 1234;
RECONFIGURE;
GO
優先順序
下表顯示優先順序的範例,視您使用的覆寫機制而定。
規則 |
sp_configure 值 |
登錄值 | 有效值 |
---|---|---|---|
max ucs send boxcars 非預設值的值(也就是不等於 256)的優先順序高於登錄值。 |
1024 | 2048 | 1024 |
如果 max ucs send boxcars 設定為預設值 256,登錄值就會生效。 |
256 | 2048 | 2048 |
如果 max ucs send boxcars 設定為 0 ,則會使用預設值,其優先順序高於登錄值。 如此一來,如果資料庫管理員沒有編輯登錄的許可權,他們仍然可以套用預設值。 |
0 | 2048 | 256 |
備註
您必須在設定max ucs send boxcars
伺服器組態選項以套用新組態之後執行RECONFIGURE
。 此設定只有在重新啟動 SQL Server 實例之後才會生效。
當非預設值對 UCS boxcar 數目生效時,SQL Server 會將資訊訊息記錄到錯誤記錄檔中。 資訊訊息包含有效值和覆寫來源: sp_configure
或 registry
。
2024-10-08 13:38:26.11 Server UCS transport default sending capacity is overridden with the value of 1234. Override source: sp_configure. This is an informational message only. No user action is required.
訊息的內部錯誤碼為 33338
。 如果未設定預設值,則不會記錄訊息。