Compartilhar via


Configuração do servidor: max ucs send boxcars

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 de 0 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.