Condividi tramite


Configurazione del server: max ucs invia boxcars

Si applica a: Anteprima di SQL Server 2025 (17.x)

Usare l'opzione max ucs send boxcars di configurazione del server per controllare il numero massimo di boxcar UCS che possono essere usati per inviare messaggi dalla replica primaria alla replica secondaria. Questa opzione è utile per controllare il flusso di dati tra le repliche in un gruppo di disponibilità AlwaysOn su una rete WAN (Wide Area Network).

Annotazioni

L'opzione max ucs send boxcars di configurazione del server è disponibile a partire da SQL Server 2025 (17.x) Preview.

Informazioni generali

Il protocollo UCS (Universal Communication Service) viene usato dai gruppi di disponibilità AlwaysOn di SQL Server per inviare blocchi di log tra repliche primarie e secondarie. UCS determina se la replica secondaria è arretrata rispetto alla replica primaria misurando il tempo necessario affinché il primario riceva un riconoscimento che la modifica è stata consolidata sul secondario.

Mentre ucs comunica tra gli endpoint, entra nel controllo del flusso quando rileva che la replica secondaria non può tenere il passo con l'applicazione delle modifiche dalla replica primaria. Questo processo funziona bene per le reti locali veloci in cui il ritardo di rete non è un fattore che contribuisce, poiché la maggior parte del ritardo è attribuita all'elaborazione nella replica secondaria. Tuttavia, quando UCS comunica tramite una rete WAN (Wide-Area Network) con un ritardo di rete significativo, ad esempio nella replica geografica, l'aumento della latenza di rete può causare il ritardo della replica secondaria. In questo scenario, il controllo del flusso è inefficiente.

Per risolvere questo scenario di ritardo di rete, UCS deve rinviare l'immissione del controllo del flusso. Ciò si ottiene modificando il limite per il numero di boxcar UCS che possono essere usati per inviare messaggi dalla replica primaria alla replica secondaria. I pacchetti UCS vengono raggruppati in un boxcar per consentire una trasmissione più efficiente in rete. Quando si aumenta il numero massimo di boxcar UCS, è possibile trasferire un maggior numero di pacchetti alla volta, il che ritarda l'ingresso nel controllo del flusso.

Eseguire l'override dei boxcar UCS con il Registro di sistema di Windows

A partire da SQL Server 2022 (16.x), è possibile controllare il numero di boxcar UCS tramite la creazione di un valore del Registro di sistema letto da SQL Server durante l'inizializzazione.

  • Chiave di registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.<instance_name>\MSSQLServer\ServiceBroker
  • Nome valore: MaxPendingSend
  • Tipo di valore: REG_SZ

Importante

È necessario creare il valore come REG_SZ e non REG_DWORD, perché SQL Server controlla il tipo e ignora il valore se non è il tipo previsto.

Questo meccanismo presenta diversi svantaggi:

  • Gli amministratori del database potrebbero non avere accesso al Registro di sistema, nello stesso computer dell'istanza di SQL Server o in remoto.

  • Gli amministratori di database e gli amministratori di sistema sono in genere due ruoli distinti con set di responsabilità diversi e quindi set diversi di autorizzazioni.

Eseguire l'override dei boxcar UCS con sp_configure

A partire da SQL Server 2025 (17.x) Preview, è possibile controllare il numero di boxcar UCS con l'opzione di configurazione del server max ucs send boxcars, con le considerazioni seguenti:

  • Questa impostazione è un'opzione avanzata sp_configure .

  • Il valore minimo è 256 (impostazione predefinita) e il valore massimo è 2048. Tuttavia, è possibile usare un valore di 0 per reimpostare il valore predefinito.

  • Questa opzione di configurazione ha la precedenza sull'impostazione del Registro di sistema.

  • Questa impostazione ha effetto dopo il riavvio di un'istanza di SQL Server.

USE master;
GO

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO

EXEC sp_configure `max ucs send boxcars`, 1234;
RECONFIGURE;
GO

Ordine di precedenza

La tabella seguente mostra esempi di precedenza, a seconda del meccanismo di override usato.

Regola valore sp_configure Valore del Registro di sistema Valore effettivo
max ucs send boxcars i valori non predefiniti ,ovvero non uguali a 256, hanno la precedenza sui valori del Registro di sistema. 1024 2048 1024
Se max ucs send boxcars è impostato sul valore predefinito 256, il valore del Registro di sistema diventa effettivo. 256 2048 2048
Se max ucs send boxcars è impostato su 0, usa il valore predefinito, che ha la precedenza sul valore del Registro di sistema. In questo modo, se gli amministratori di database non hanno l'autorizzazione per modificare il Registro di sistema, possono comunque applicare il valore predefinito. 0 2048 256

Osservazioni:

È necessario eseguire RECONFIGURE dopo aver impostato l'opzione di configurazione del max ucs send boxcars server per applicare la nuova configurazione. L'impostazione ha effetto solo dopo il riavvio dell'istanza di SQL Server.

Quando un valore non predefinito è attivo per il numero di boxcar UCS, SQL Server registra un messaggio informativo nel log degli errori. Il messaggio informativo contiene il valore effettivo e l'origine dell'override: sp_configure o 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.

Il codice di errore interno per il messaggio è 33338. Il messaggio non viene registrato se il valore predefinito è impostato.