Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Versão prévia do SQL Server 2025 (17.x)
Use a opção de configuração do servidor max ucs send boxcars
para controlar o número máximo de boxcars UCS que podem ser usados para enviar mensagens da réplica primária para a secundária. Essa opção é útil para controlar o fluxo de dados entre réplicas em um grupo de disponibilidade Always On em uma WAN (rede de ampla área).
Observação
A max ucs send boxcars
opção de configuração do servidor está disponível a partir da versão prévia do SQL Server 2025 (17.x).
Visão geral
O protocolo UCS (Serviço de Comunicação Universal) é usado por grupos de disponibilidade Always On do SQL Server para enviar blocos de log entre réplicas primárias e secundárias. O UCS determina se a réplica secundária está atrasada em relação à réplica primária medindo o tempo necessário para que a réplica primária receba uma confirmação de que a alteração foi confirmada no secundário.
Embora o UCS se comunique entre terminais, ele entra no controle de fluxo ao detectar que a réplica secundária não consegue acompanhar a aplicação das alterações da réplica primária. Esse processo funciona bem para redes locais rápidas em que o atraso de rede não é um fator contribuinte, pois a maior parte do atraso é atribuída ao processamento na réplica secundária. No entanto, quando o UCS se comunica por uma WAN (rede de ampla área) com um atraso de rede significativo, como na replicação geográfica, o aumento da latência de rede pode fazer com que a réplica secundária fique para trás. Nesse cenário, o controle de fluxo é ineficiente.
Para resolver esse cenário de retardo de rede, o UCS precisa adiar a entrada no controle de fluxo. Isso é feito alterando o limite do número de boxcars UCS que podem ser usados para enviar mensagens da réplica principal para a réplica auxiliar. Os pacotes UCS são agrupados em um boxcar para permitir uma transmissão mais eficiente em uma rede. Quando você aumenta o número máximo de carros de caixa UCS, mais pacotes podem ser transferidos por vez, o que, por sua vez, adia a entrada no controle de fluxo.
Substituir os boxcars do UCS com o Registro do Windows
A partir do SQL Server 2022 (16.x), você pode controlar o número de compartimentos UCS por meio da criação de um valor de registro que o SQL Server lê durante a inicialização.
- Chave do registo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.<instance_name>\MSSQLServer\ServiceBroker
- Nome do valor:
MaxPendingSend
- Tipo de valor:
REG_SZ
Importante
Você deve criar o valor como REG_SZ
e não REG_DWORD
, porque o SQL Server verifica o tipo e ignora o valor se ele não for o tipo esperado.
Esse mecanismo tem várias desvantagens:
Os administradores de banco de dados podem não ter acesso ao registro, seja no mesmo computador que a instância do SQL Server ou remotamente.
Administradores de banco de dados e administradores de sistema geralmente são duas funções distintas com conjuntos diferentes de responsabilidades e, portanto, conjuntos diferentes de permissões.
Substituir vagões UCS por meio de sp_configure
A partir da versão prévia do SQL Server 2025 (17.x), você pode controlar o número de boxcars UCS com a opção max ucs send boxcars
de configuração do servidor, com as seguintes considerações:
Essa configuração é uma opção avançada
sp_configure
.O valor mínimo é
256
(o padrão) e o valor máximo é2048
. No entanto, você pode usar um valor de0
para redefinir o valor para o padrão.Essa opção de configuração tem precedência sobre a configuração do Registro.
Essa configuração entra em vigor após a reinicialização de uma instância do SQL Server.
USE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure `max ucs send boxcars`, 1234;
RECONFIGURE;
GO
Ordem de precedência
A tabela a seguir mostra exemplos de precedência, dependendo de qual mecanismo de substituição você usa.
Regra | Valor sp_configure |
Valor do Registro | Valor efetivo |
---|---|---|---|
max ucs send boxcars os valores que não são padrão (ou seja, não são iguais a 256) têm precedência sobre os valores do Registro. |
1024 | 2048 | 1024 |
Se max ucs send boxcars for definido como seu valor padrão de 256, o valor do Registro entrará em vigor. |
256 | 2048 | 2048 |
Se max ucs send boxcars estiver definido como 0 , ele usará o valor padrão, que tem precedência sobre o valor do Registro. Dessa forma, se os administradores de banco de dados não tiverem permissão para editar o registro, eles ainda poderão aplicar o valor padrão. |
0 | 2048 | 256 |
Observações
Você deve executar RECONFIGURE
depois de definir a opção de configuração do max ucs send boxcars
servidor para aplicar a nova configuração. A configuração só entra em vigor depois de reiniciar a instância do SQL Server.
Quando um valor não padrão é aplicado para o número de vagões UCS, o SQL Server registra uma mensagem informativa no log de erros. A mensagem informativa contém o valor efetivo e a origem da substituição: 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.
O código de erro interno da mensagem é 33338
. A mensagem não será registrada se o valor padrão estiver definido.