Compartilhar via


Agente do Leitor de Log de Replicação

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

O Agente de Leitor de Log de Replicação é um executável que monitora o log de transações de cada banco de dados configurado para replicação transacional e copia as transações marcadas para replicação do log de transações no banco de dados de distribuição.

Observação

Os parâmetros podem ser especificados em qualquer ordem. Quando parâmetros opcionais não são especificados, valores predefinidos com base no perfil do agente padrão são usados.

Sintaxe

logread [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor server_name[ \instance_name ] ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 ] ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 ] ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -LogScanThreshold scan_threshold ]
[ -MaxCmdsInTran number_of_commands ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -PublisherFailoverPartner server_name[ \instance_name ] ]
[ -PublisherSecurityMode [ 0 | 1 ] ]
[ -PublisherLogin publisher_login ]
[ -PublisherPassword publisher_password ]
[ -QueryTimeOut query_time_out_seconds ]
[ -ReadBatchSize number_of_transactions ]
[ -ReadBatchThreshold read_batch_threshold ]
[ -RecoverFromDataErrors ]

Argumentos

-?

Exibe informações de uso.

-Editora server_name [ \instance_name ]

O nome do Editor. Especifique <server_name> para a instância padrão do SQL Server nesse servidor. Especifique <server_name>\<instance_name> para uma instância nomeada do SQL Server nesse servidor.

-PublisherDB publisher_database

O nome do banco de dados Publicador.

-Continuous

Especifica se o agente tenta ou não sondar transações replicadas continuamente. Se especificado, o agente sondará as transações replicadas da origem em intervalos de sondagem, mesmo que não haja transações pendentes.

-DefinitionFile def_path_and_file_name

O caminho do arquivo de definição do agente. Um arquivo de definição de agente contém argumentos de linha de comando para o agente. O conteúdo do arquivo é analisado como um arquivo executável. Use aspas duplas (") para especificar valores de argumento que contenham caracteres arbitrários.

-Distribuidor server_name [ \instance_name ]

O nome do Distribuidor. Especifique <server_name> para a instância padrão do SQL Server nesse servidor. Especifique <server_name>\<instance_name> para uma instância nomeada do SQL Server nesse servidor.

-DistribuidorLogin distributor_login

O nome de logon do Distribuidor.

-DistributorPassword distributor_password

A senha do Distribuidor.

-DistributorSecurityMode [ 0 | 1 ]

Especifica o modo de segurança do Distribuidor. Um valor de indica o Modo de Autenticação do 0 SQL Server (padrão) e um valor de indica o Modo de Autenticação do 1 Windows.

-EncryptionLevel [ 0 | 1 | 2 ]

O nível de criptografia TLS (Transport Layer Security), anteriormente conhecido como SSL (Secure Sockets Layer), usado pelo Log Reader Agent ao fazer conexões.

Valor EncryptionLevel Descrição
0 Especifica que o TLS não é usado.
1 Especifica que o TLS é usado, mas o agente não verifica se o certificado do servidor TLS está assinado por um emissor confiável.
2 Especifica que o TLS é usado e que o certificado é verificado.

Observação

É definido um certificado TLS/SSL válido com um nome de domínio totalmente qualificado do SQL Server. Para que o agente se conecte com êxito ao definir -EncryptionLevel como 2, crie um alias no SQL Server local. O parâmetro 'Alias Name' deve ser o nome do servidor e o parâmetro 'Server' deve ser definido como o nome totalmente qualificado do SQL Server.

Para obter mais informações, consulte View and Modify Replication Security Settings.

-ExtendedEventConfigFile configuration_path_and_file_name

Especifica o caminho e o nome do arquivo de configuração XML de eventos estendidos. O arquivo de configuração de eventos estendidos permite configurar sessões e habilitar eventos para acompanhamento. Somente para uso interno.

-HistoryVerboseLevel [ 0 | 1 | 2 ]

Especifica a quantidade de histórico registrada durante uma operação de leitura de log. Você pode minimizar o efeito de desempenho do registro de histórico selecionando 1.

Valor HistoryVerboseLevel Descrição
0 Nenhum.
1 (padrão) Sempre atualiza uma mensagem de histórico anterior do mesmo status (inicialização, andamento, êxito, etc.). Se nenhum registro anterior com o mesmo status existir, insira um registro novo.
2 Insira novos registros de histórico, a menos que o registro seja para coisas como mensagens ociosas ou mensagens de trabalho de execução longa; em tal caso, atualize os registros anteriores.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

O número de segundos antes do thread de histórico verifica se alguma das conexões existentes está aguardando uma resposta do servidor. Esse valor pode ser diminuído para evitar que o agente de verificação marque o Agente de Leitor de Log como suspeito ao executar um lote de execução longa. O padrão é 300 segundos.

-LoginTimeOut login_time_out_seconds

O número de segundos antes do tempo limite de login. O padrão é 15 segundos.

-LogScanThreshold scan_threshold

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

-MaxCmdsInTran number_of_commands

Especifica o número máximo de instruções agrupadas em uma transação à medida que o Log Reader grava comandos no banco de dados de distribuição. O uso desse parâmetro permite que o Agente de Leitor de Log e o Agente de Distribuição divida grandes transações (consistindo em muitos comandos) no Publicador em várias transações menores quando aplicadas no Assinante. A especificação desse parâmetro pode reduzir a contenção no Distribuidor e pode reduzir a latência entre o Publicador e o Assinante. Como a transação original é aplicada em unidades menores, o Assinante pode acessar linhas de uma grande transação lógica do Publicador antes do final da transação original, quebrando a atomicidade transacional estrita. O padrão é 0, que preserva os limites de transação do Publicador.

Esse parâmetro é ignorado para publicações que não são do SQL Server. Para obter mais informações, consulte Configurando o trabalho do conjunto de transações.

MaxCmdsInTran não foi projetado para estar sempre ligado. Ele funciona em torno de casos em que alguém acidentalmente executou um grande número de operações DML em uma única transação. Isso causa um atraso na distribuição de comandos, até que toda a transação esteja no banco de dados de distribuição, bloqueios sendo mantidos, etc. Se você se enquadra rotineiramente nessa situação, revise seus aplicativos e encontre maneiras de reduzir o tamanho da transação.

Aviso

Erros de chave primária podem ocorrer se o parâmetro for adicionado e removido durante a MaxCmdsInTran replicação de uma transação grande. Para resolver erros de chave primária em transações grandes, adicione o MaxCmdsInTran parâmetro novamente até que a transação seja replicada para o banco de dados de distribuição.

Não há suporte para o uso do MaxCmdsInTran parâmetro em um banco de dados que tenha CDC (Captura de Dados de Alteração) e replicação habilitadas e pode levar à perda de dados nas tabelas de alteração de CDC.

-MessageInterval message_interval

O intervalo de tempo usado para o registro do histórico. Um evento de histórico é registrado quando o MessageInterval valor é atingido após o último evento de histórico ser registrado.

Se não houver nenhuma transação replicada disponível na origem, o agente relatará uma mensagem de não transação ao Distribuidor. Essa opção especifica quanto tempo o agente espera antes de informar outro mensagem de não transação. O agente sempre informa uma mensagem de não transação quando detecta que não há transações disponíveis na origem após transações replicadas de processamento anterior. O padrão é 60 segundos.

-MultiSubnetFailover [ 0 | 1 ]

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores.

Especifica se a propriedade MultiSubnetFailover está habilitada ou não. Se o seu aplicativo estiver se conectando a um grupo de disponibilidade AlwaysOn (AG) em diferentes sub-redes, definir MultiSubnetFailover como 1 (true) fornece uma detecção e uma conexão mais rápida ao servidor (atualmente) ativo.

Ao configurar uma publicação transacional em um AG, o Agente de Leitor de Log cria um servidor vinculado dinâmico para o ouvinte verificar os metadados. No SQL Server 2022 (16.x) 10 e versões posteriores, há uma alteração na configuração do servidor vinculado dinâmico. Para obter mais informações, confira KB5031778.

-Saída output_path_and_file_name

O caminho do arquivo de saída do agente. Se o nome do arquivo não for fornecido, a saída será enviada para o console. Se o nome do arquivo especificado existir, a saída será anexada ao arquivo.

-OutputVerboseLevel [ 0 | 1 | 2 | 3 | 4 ]

Especifica se a saída deve ser detalhada.

Valor Descrição
0 Somente mensagens de erro são impressas.
1 Todas as mensagens de relatório de progresso do agente são impressas.
2 (padrão) Todas as mensagens de relatório de progresso do agente e de erro são impressas.
3 Os primeiros 100 bytes de cada comando replicado são impressos.
4 Todos os comandos replicados são impressos.

Os valores 2-4 são úteis na depuração.

-Tamanho do pacote packet_size

O tamanho do pacote, em bytes. O padrão é 4096 (bytes).

-PollingInterval polling_interval

Com que frequência, em segundos, o log é consultado em busca de transações replicadas. O padrão é 5 segundos.

-Nome do Perfil profile_name

Especifica um perfil de agente a ser usado para parâmetros de agente. Se ProfileName for NULL, o perfil do agente será desativado. Se ProfileName não for especificado, o perfil padrão para o tipo de agente será usado. Para obter mais informações, consulte Perfis do agente de replicação.

-PublisherFailoverPartner server_name [ \instance_name ]

Especifica a instância de parceiro de failover do SQL Server que participa de uma sessão de espelhamento de banco de dados com o banco de dados de publicação. Para obter mais informações, confira Espelhamento e replicação de banco de dados (SQL Server).

-PublisherSecurityMode [ 0 | 1 ]

Especifica o modo de segurança do Publicador. Um valor de indica Autenticação do 0 SQL Server (padrão) e um valor de indica o Modo de Autenticação do 1 Windows.

-PublisherLogin publisher_login

O nome de logon do Publicador.

-PublisherPassword publisher_password

A senha do Publicador.

-QueryTimeOut query_time_out_seconds

O número de segundos antes do tempo limite da consulta. O padrão é 1.800 segundos.

-ReadBatchSize number_of_transactions

O número máximo de transações lidas do log de transações do banco de dados de publicação por ciclo de processamento, com um padrão de 500 e máximo de 10000. O agente continua a ler transações em lotes até que todas as transações sejam lidas no log. Não há suporte para esse parâmetro para Publicadores Oracle.

-ReadBatchThreshold number_of_commands

O número de comandos de replicação a serem lidos do log de transações antes de serem emitidos para o Assinante pelo Distribution Agent. O padrão é 0. Se esse parâmetro não for especificado, o Log Reader Agent lerá até o final do log ou até o número especificado em -ReadBatchSize (número de transações).

-RecoverFromDataErrors

Especifica que o Agente de Leitor de Log continuará a executar, quando encontrar erros em dados de colunas publicados de um Publicador não SQL Server. Por padrão, tais erros fazem o Agente de Leitor de Log falhar. Quando você usa -RecoverFromDataErrors, os dados de coluna incorretos são replicados como NULL ou um valor não nulo apropriado, e as mensagens de aviso são registradas na tabela MSlogreader_history . Esse parâmetro só tem suporte para Editores Oracle.

Comentários

Se você instalou o SQL Server Agent para executar com uma conta Sistema Local em vez de uma conta de usuário de domínio (o padrão), o serviço só poderá acessar o computador local. Se o Agente de Leitor de Log executado no SQL Server Agent estiver configurado para usar o modo de autenticação do Windows ao fazer logon no SQL Server, o Agente de Leitor de Log falhará. A configuração padrão é Autenticação do SQL Server. Para obter informações em como alterar contas de segurança, consulte View and Modify Replication Security Settings.

Para iniciar o Log Reader Agent, execute logread.exe a partir do prompt de comando. Para obter informações, consulte Conceitos dos executáveis do agente de replicação.