Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2025 (17.x)
Utilisez l'option de configuration du serveur max ucs send boxcars pour réguler le nombre maximal de boxcars UCS pouvant être utilisés pour le transfert de messages du réplica principal vers le réplica secondaire. Cette option est utile pour contrôler le flux de données entre les réplicas d’un groupe de disponibilité Always On sur un réseau étendu (WAN).
Remarque
L’option max ucs send boxcars de configuration du serveur est disponible à partir de SQL Server 2025 (17.x).
Aperçu
Le protocole UCS (Universal Communication Service) est utilisé par les groupes de disponibilité Always On SQL Server pour envoyer des blocs de journal entre les réplicas principaux et secondaires. UCS détermine si le réplica secondaire se trouve derrière le réplica principal en mesurant le temps nécessaire pour que le réplica principal reçoive un accusé de réception indiquant que la modification a été renforcée sur le réplica secondaire.
Même si UCS communique entre les points de terminaison, il entre dans le contrôle de flux lorsqu’il détecte que le réplica secondaire ne peut pas suivre l'application des changements provenant du réplica principal. Ce processus fonctionne bien pour les réseaux locaux rapides où le retard réseau n’est pas un facteur contributif, car la majeure partie du délai est attribuée au traitement sur le réplica secondaire. Toutefois, quand UCS communique sur un réseau étendu (WAN) avec un décalage réseau important, comme dans la géoréplication, l'augmentation de la latence réseau peut entraîner la réplique secondaire à ne pas suivre le rythme. Dans ce scénario, le contrôle de flux est inefficace.
Pour résoudre ce scénario de latence réseau, UCS doit reporter l'activation du contrôle de flux. Pour atteindre cet objectif, changez la limite du nombre de boxcars UCS pouvant être utilisés pour envoyer des messages du réplica principal au réplica secondaire. Les paquets UCS sont regroupés dans un boxcar pour permettre une transmission plus efficace sur un réseau. Lorsque vous augmentez le nombre maximal de wagons UCS, plus de paquets peuvent être transférés en même temps, ce qui retarde l'activation du contrôle de flux.
Remplacer les boxcars UCS par le Registre Windows
À compter de SQL Server 2022 (16.x), vous pouvez contrôler le nombre de boxcars UCS via la création d’une valeur de Registre que SQL Server lit pendant l’initialisation.
- Clé de Registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.<instance_name>\MSSQLServer\ServiceBroker - Nom de la valeur :
MaxPendingSend - Type de valeur :
REG_SZ
Important
Vous devez créer la valeur comme REG_SZ et non REG_DWORD, car SQL Server vérifie le type et ignore la valeur s’il n’est pas le type attendu.
Ce mécanisme présente plusieurs inconvénients :
Les administrateurs de base de données peuvent ne pas avoir accès au Registre, soit sur la même machine que l’instance SQL Server, soit à distance.
Les administrateurs de base de données et les administrateurs système sont généralement deux rôles distincts avec différents ensembles de responsabilités, et donc différents ensembles d’autorisations.
Redéfinir les boxcars UCS avec sp_configure
À compter de SQL Server 2025 (17.x), il est possible de contrôler le nombre de wagons UCS avec l’option de configuration du max ucs send boxcars serveur, en tenant compte des considérations suivantes :
Ce paramètre est une option avancée
sp_configure.La valeur minimale est
256(la valeur par défaut) et la valeur maximale est2048. Toutefois, vous pouvez utiliser une valeur de0pour réinitialiser la valeur par défaut.Cette option de configuration est prioritaire sur le paramètre de Registre.
Ce paramètre prend effet après le redémarrage d’une instance SQL Server.
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure `max ucs send boxcars`, 1234;
RECONFIGURE;
GO
Ordre de priorité
Le tableau suivant présente des exemples de précédence, en fonction du mécanisme de remplacement que vous utilisez.
| Règle | valeur sp_configure |
Valeur de Registre | Valeur effective |
|---|---|---|---|
max ucs send boxcars les valeurs qui ne sont pas par défaut (c’est-à-dire non égales à 256) sont prioritaires sur les valeurs de Registre. |
1024 | 2048 | 1024 |
Si max ucs send boxcars est réglé sur sa valeur par défaut de 256, la valeur du Registre prend effet. |
256 | 2048 | 2048 |
Si max ucs send boxcars est défini sur 0, elle utilise la valeur par défaut, qui est prioritaire sur la valeur de registre. De cette façon, si les administrateurs de base de données n’ont pas l’autorisation de modifier le Registre, ils peuvent toujours appliquer la valeur par défaut. |
0 | 2048 | 256 |
Remarques
Vous devez exécuter RECONFIGURE après avoir défini l’option de configuration du max ucs send boxcars serveur pour appliquer la nouvelle configuration. Le paramètre prend effet uniquement après le redémarrage de l’instance SQL Server.
Lorsqu’une valeur autre que celle par défaut est en vigueur pour le nombre de wagons UCS, SQL Server consigne un message d'information dans le journal des erreurs. Le message d’informations contient la valeur effective et la source de remplacement : sp_configure ou 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.
Le code d’erreur interne du message est 33338. Le message n’est pas enregistré si la valeur par défaut est définie.