Partilhar via


Configuração do servidor: max ucs enviar boxcars

Aplica-se a: 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 utilizados para enviar mensagens da réplica primária para a réplica secundária. Essa opção é útil para controlar o fluxo de dados entre réplicas em um grupo de disponibilidade Always On em uma rede de longa distância (WAN).

Observação

A max ucs send boxcars opção de configuração do servidor está disponível a partir 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 fica atrás da réplica primária medindo o tempo que leva para a primária receber uma confirmação de que a alteração foi reforçada na secundária.

Embora o UCS se comunique entre os pontos de extremidade, ele entra no controle de fluxo quando deteta que a réplica secundária não consegue acompanhar a aplicação de alterações da réplica primária. Esse processo funciona bem para redes locais rápidas, onde o atraso da rede não é um fator contribuinte, já que a maior parte do atraso é atribuída ao processamento na réplica secundária. No entanto, quando o UCS se comunica por meio de uma rede de longa distância (WAN) com atraso de rede significativo, como na replicação geográfica, o aumento da latência da 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 atraso de rede, o UCS precisa adiar o controle de fluxo de entrada. Isso é conseguido alterando o limite do número de vagões UCS que podem ser utilizados para enviar mensagens da réplica primária para a réplica secundária. Os pacotes UCS são agrupados em um boxcar para permitir uma transmissão mais eficiente através de uma rede. Quando se aumenta o número máximo de boxcars UCS, mais pacotes podem ser transferidos de cada vez, o que, por sua vez, adia a execução do controlo de fluxo.

Substituir componentes UCS com o registo do Windows

A partir do SQL Server 2022 (16.x), poderá controlar o número de boxcars UCS através da criação de um valor de registo 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.

Este mecanismo tem várias desvantagens:

  • Os administradores de banco de dados podem não ter acesso ao Registro, na mesma máquina 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 diferentes conjuntos de responsabilidades e, portanto, diferentes conjuntos de permissões.

Substitua os boxcars UCS por sp_configure

A partir do SQL Server 2025 (17.x), pode controlar o número de vagões UCS com a max ucs send boxcars opção 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 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 do mecanismo de substituição usado.

Regra sp_configure valor Valor de registo 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 está em vigor para o número de vagões UCS, o SQL Server registra uma mensagem de informação 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.