Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 di0
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.