Partilhar via


Agente de distribuição de replicação

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

O Replication Distribution Agent é um executável que move o snapshot (para replicação de snapshot e replicação transacional) e as transações mantidas nas tabelas do banco de dados de distribuição (para replicação transacional) para as tabelas de destino nos Assinantes.

Observação

Os parâmetros podem ser especificados em qualquer ordem. Quando os parâmetros opcionais não são especificados, os valores das configurações predefinidas do Registro no computador local são usados.

Sintaxe

distrib [ -? ]
-Publisher server_name [ \instance_name ]
-PublisherDB publisher_database
-Subscriber server_name [ \instance_name ]
-SubscriberDB subscriber_database
[ -AltSnapshotFolder alt_snapshot_folder_path ]
[ -BcpBatchSize bcp_batch_size ]
[ -CommitBatchSize commit_batch_size ]
[ -CommitBatchThreshold commit_batch_threshold ]
[ -Continuous ]
[ -DefinitionFile def_path_and_file_name ]
[ -Distributor distributor ]
[ -DistributorLogin distributor_login ]
[ -DistributorPassword distributor_password ]
[ -DistributorSecurityMode [ 0 | 1 ] ]
[ -EncryptionLevel [ 0 | 1 | 2 | 3 | 4 ] ]
[ -ErrorFile error_path_and_file_name ]
[ -ExtendedEventConfigFile configuration_path_and_file_name ]
[ -FileTransferType [ 0 | 1 ] ]
[ -FtpAddress ftp_address ]
[ -FtpPassword ftp_password ]
[ -FtpPort ftp_port ]
[ -FtpUserName ftp_user_name ]
[ -HistoryVerboseLevel [ 0 | 1 | 2 | 3 ] ]
[ -Hostname host_name ]
[ -KeepAliveMessageInterval keep_alive_message_interval_seconds ]
[ -LoginTimeOut login_time_out_seconds ]
[ -MaxBcpThreads ]
[ -MaxDeliveredTransactions number_of_transactions ]
[ -MessageInterval message_interval ]
[ -MultiSubnetFailover [ 0 | 1 ] ]
[ -OledbStreamThreshold oledb_stream_threshold ]
[ -Output output_path_and_file_name ]
[ -OutputVerboseLevel [ 0 | 1 | 2 ] ]
[ -PacketSize packet_size ]
[ -PollingInterval polling_interval ]
[ -ProfileName profile_name ]
[ -Publication publication ]
[ -QueryTimeOut query_time_out_seconds ]
[ -QuotedIdentifier quoted_identifier ]
[ -SkipErrors native_error_id [ :...n ] ]
[ -SubscriberDatabasePath subscriber_path ]
[ -SubscriberLogin subscriber_login ]
[ -SubscriberPassword subscriber_password ]
[ -SubscriberSecurityMode [ 0 | 1 ] ]
[ -SubscriberType [ 0 | 1 | 3 ] ]
[ -SubscriptionStreams [ 1 | 2 | ...64 ] ]
[ -SubscriptionTableName subscription_table ]
[ -SubscriptionType [ 0 | 1 | 2 ] ]
[ -TransactionsPerHistory [ 0 | 1 | ...10000 ] ]
[ -UseDTS ]
[ -UseInprocLoader ]
[ -UseOledbStreaming ]

Argumentos

-?

Imprime todos os parâmetros disponíveis.

- Editora server_name [ \instance_name ]

O nome do Editor. Especifique <server_name> para a instância padrão do Microsoft SQL Server nesse servidor. Especifique <server_name>\<instance_name> para uma instância nomeada do SQL Server nesse servidor. Se o banco de dados do editor estiver em um grupo de disponibilidade (AG), isso ainda refletirá o nome do servidor do editor primário original devido ao sp_redirect_publisher. Não reflete o nome do ouvinte AG.

-PublisherDB publisher_database

O nome do banco de dados do Publisher.

-Assinante server_name [ \instance_name ]

O nome do Assinante. 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. Se o seu banco de dados de assinantes estiver em um AG, isso deve refletir o nome do ouvinte AG.

-SubscriberDB subscriber_database

O nome do banco de dados de assinantes.

- AltSnapshotFolder alt_snapshot_folder_path

O caminho para a pasta que contém o instantâneo inicial de uma assinatura.

-BcpBatchTamanho bcp_batch_size

O número de linhas a serem enviadas em uma operação de cópia em massa. Quando você executa uma bcp in operação, o tamanho do lote é o número de linhas a serem enviadas ao servidor como uma transação e também o número de linhas que devem ser enviadas antes que o Agente de Distribuição registre uma mensagem de progresso bcp . Quando você executa uma bcp out operação, um tamanho de lote fixo de 1000 é usado.

-CommitBatchSize commit_batch_size

O número de transações a serem emitidas para o Assinante antes de uma declaração COMMIT ser emitida. O padrão é 100 e o máximo é 10000. Esse parâmetro é ignorado quando o snapshot é aplicado no assinante pelo Distribution Agent.

-CommitBatchThreshold commit_batch_threshold

O número de comandos de replicação a serem emitidos para o Assinante antes que uma instrução COMMIT seja emitida. O padrão é 1000 e o máximo é 10000. Esse parâmetro é ignorado quando o snapshot é aplicado no assinante pelo Distribution Agent.

-Em contínuo

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

-Definição do Ficheiro 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 prompt de comando para o agente. O conteúdo do arquivo é analisado como um arquivo executável. Use aspas duplas (") para especificar valores de argumento contendo caracteres arbitrários.

-Distribuidor distribuidor

O nome do distribuidor. Para a distribuição Distribuidor (push), o nome assume como padrão o nome do Distribuidor local. Se o banco de dados do seu distribuidor estiver em um AG, isso deve refletir o nome do ouvinte AG.

-DistribuidorLogin distributor_login

O nome de login do Distribuidor.

-DistribuidorPalavra-passe distributor_password

A palavra-passe do Distribuidor.

-Modo de Segurança do Distribuidor [ 0 | 1 ]

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

-Nível de Encriptação [ 0 | 1 | 2 | 3 | 4 ]

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

Valor EncryptionLevel Descrição
0 Especifica que o TLS não é usado.
1 Especifica que o TLS 1.2 é 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 1.2 é usado e que o certificado é verificado.
3 Especifica que, para conexões da Instância Gerenciada SQL do Azure, ou do SQL Server 2025 e versões posteriores, com a Instância Gerenciada SQL do Azure, o TLS 1.3 é usado e o certificado é verificado. Para conexões com o SQL Server (qualquer versão com suporte), o TLS 1.3 não é imposto com a opção 3.
4 Especifica que, para conexões da Instância Gerenciada SQL do Azure, ou do SQL Server 2025 e versões posteriores, com a Instância Gerenciada SQL do Azure, o TLS 1.3 é usado e o certificado é verificado. Para conexões da Instância Gerenciada SQL do Azure, ou SQL Server 2025 e versões posteriores, com o SQL Server (qualquer versão com suporte), o TLS 1.3 é usado e o certificado é verificado. Requer a instalação do certificado em hosts do SQL Server que estão recebendo conexões com EncryptionLevel set to4.

Um certificado TLS válido é definido 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 Exibir e modificar configurações de segurança de replicação.

- Ficheiro de Erro error_path_and_file_name

O caminho e o nome do arquivo de erro gerado pelo Distribution Agent. Esse arquivo é gerado em qualquer ponto onde ocorreu falha durante a aplicação de transações de replicação no Assinante; erros que ocorrem no Editor ou Distribuidor não são registrados neste arquivo. Esse arquivo contém as transações de replicação com falha e as mensagens de erro associadas. Quando não especificado, o arquivo de erro é gerado no diretório atual do Distribution Agent. O nome do arquivo de erro é o nome do agente de distribuição com uma extensão .err. Se o nome de arquivo especificado existir, as mensagens de erro serão acrescentadas ao arquivo. Este parâmetro pode ter no máximo 256 caracteres Unicode.

-ExtensedEventConfigFile configuration_path_and_file_name

Especifica o caminho e o nome do arquivo para o arquivo de configuração XML de eventos estendidos. O arquivo de configuração de eventos estendido permite configurar sessões e habilitar eventos para rastreamento.

-FileTransferType [ 0 | 1 ]

Especifica o tipo de transferência de arquivo. Um valor de indica UNC (convenção de 0 nomenclatura universal) e um valor de indica FTP (protocolo de transferência de 1 arquivos).

-Endereço FTP ftp_address

O endereço de rede do serviço FTP para o Distribuidor. Quando não especificado, DistributorAddress é usado. Se DistributorAddress não for especificado, Distributor será usado.

- FtpPassword ftp_password

A senha de usuário usada para se conectar ao serviço FTP.

- FtpPort ftp_port

O número da porta do serviço FTP para o Distribuidor. Quando não especificado, o número de porta padrão para o serviço FTP (21) é usado.

- FtpUserName ftp_user_name

O nome de usuário usado para se conectar ao serviço FTP. Quando não especificado, anonymous é usado.

-HistóriaVerboseLevel [ 0 | 1 | 2 | 3 ]

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

Valor HistoryVerboseLevel Descrição
0 As mensagens de progresso são gravadas no console ou em um arquivo de saída. Os registros de histórico não são registrados no banco de dados de distribuição.
1 (padrão) Sempre atualize uma mensagem de histórico anterior do mesmo status (inicialização, progresso, sucesso e assim por diante). Se não existir nenhum registo anterior com o mesmo estado, insira um novo registo.
2 Insira novos registros de histórico, a menos que o registro seja para coisas como mensagens ociosas ou mensagens de trabalho de longa duração, caso em que atualize os registros anteriores.
3 Sempre insira novos registros, a menos que seja para mensagens ociosas.

-Nome do anfitrião host_name

O nome do host usado ao se conectar ao Editor. Este parâmetro pode ter no máximo 128 caracteres Unicode.

-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 reduzido para evitar que o agente de verificação marque o agente de distribuição como suspeito ao executar um lote de longa duração. O padrão é 300 segundos.

- LoginTimeout login_time_out_seconds

O número de segundos antes do início de sessão expirar. O padrão é 15 segundos.

- MaxBcpThreads number_of_threads

Especifica o número de operações de cópia em massa que podem ser executadas em paralelo. O número máximo de threads e conexões ODBC que existem simultaneamente é o menor ou o número de solicitações de cópia em massa que aparecem na transação de sincronização no banco de MaxBcpThreads dados de distribuição. MaxBcpThreads deve ter um valor maior que 0 e não tem limite superior codificado. O padrão é 1, até um valor máximo de 8. Ao aplicar um instantâneo que foi gerado no Publisher usando a opção de instantâneo simultâneo, um thread é usado, independentemente do número especificado para MaxBcpThreads.

- MaxDeliveredTransactions number_of_transactions

O número máximo de transações push ou pull aplicadas a Assinantes em uma sincronização. Um valor de 0 indica que o máximo é um número infinito de transações. Outros valores podem ser usados pelos Assinantes para encurtar a duração de uma sincronização que está sendo extraída de um Editor.

Se -MaxDeliveredTransactions e -Continuous forem ambos especificados, o Agente de Distribuição entrega o número especificado de transações e, em seguida, para (mesmo que -Continuous seja especificado). Você deve reiniciar o Distribution Agent após a conclusão do trabalho.

-IntervaloMensagem message_interval

O intervalo de tempo usado para o registro do histórico. Um evento de histórico é registrado quando um destes parâmetros é atingido:

  • O TransactionsPerHistory valor é atingido depois que o último evento de histórico é registrado.

  • O MessageInterval valor é atingido depois que o último evento de histórico é registrado.

Se não houver nenhuma transação replicada disponível na origem, o agente relatará uma mensagem sem transação ao Distribuidor. Esta opção especifica quanto tempo o agente aguarda antes de relatar outra mensagem sem transação. Os agentes sempre relatam uma mensagem sem transação quando detetam que não há transações disponíveis na origem depois de processar anteriormente as transações replicadas. A predefinição é 60 segundos.

-MultiSubnetFailover

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

Especifica se a propriedade MultiSubnetFailover está habilitada ou não. Se seu aplicativo estiver se conectando a um AG em sub-redes diferentes, definir MultiSubnetFailover=true fornece deteção e conexão mais rápidas com o servidor (atualmente) ativo.

-OledbStreamThreshold oledb_stream_threshold

Especifica o tamanho mínimo, em bytes, para dados de objeto binário grande acima do qual os dados são vinculados como um fluxo. Você deve especificar -UseOledbStreaming para usar esse parâmetro. Os valores podem variar de 400 bytes a 1.048.576 bytes, com um padrão de 16.384 bytes.

-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 de arquivo especificado existir, a saída será anexada ao arquivo.

-OutputVerboseLevel [ 0 | 1 | 2 ]

Especifica se a saída deve ser detalhada. Se o nível detalhado for 0, apenas as mensagens de erro serão impressas. Se o nível detalhado for 1, todas as mensagens do relatório de progresso serão impressas. Se o nível detalhado for 2 (padrão), todas as mensagens de erro e mensagens de relatório de progresso serão impressas, o que é útil para depuração.

- PacoteTamanho packet_size

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

- PollingInterval polling_interval

Com que frequência, em segundos, o banco de dados de distribuição é consultado para 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 informações, consulte Perfis do agente de replicação.

- Publicação

O nome da publicação. Esse parâmetro só é válido se a publicação estiver definida para ter sempre um instantâneo disponível para assinaturas novas ou reinicializadas.

- QueryTimeout query_time_out_seconds

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

- IdentificadorCitado quoted_identifier

Especifica o caractere identificador entre aspas a ser usado. O primeiro caractere do valor indica o valor que o Distribution Agent usa. Se QuotedIdentifier for usado sem valor, o Distribution Agent usará um espaço. Se QuotedIdentifier não for usado, o Agente de Distribuição usará qualquer identificador cotado suportado pelo Assinante.

-SkipErrors native_error_id [ :... n ]

Uma lista separada por dois pontos que especifica os números de erro a serem ignorados por esse agente. Esse parâmetro é ignorado quando o snapshot está sendo aplicado no assinante pelo Distribution Agent.

-Caminho da Base de Dados de Assinantes subscriber_database_path

O caminho para o banco de dados Jet (arquivo .mdb) se SubscriberType for 2 (permite uma conexão com um banco de dados Jet sem um nome de fonte de dados ODBC (DSN)).

-AssinanteLogin subscriber_login

O nome de login do assinante. Se SubscriberSecurityMode for 0 (para Autenticação do SQL Server), esse parâmetro deve ser especificado.

-Palavra-passe do assinante subscriber_password

A palavra-passe do Subscritor. Se SubscriberSecurityMode for 0 (para Autenticação do SQL Server), esse parâmetro deve ser especificado.

-Modo de Segurança para Assinantes [ 0 | 1 ]

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

-SubscritorTipo [ 0 | 1 | 3 ]

Especifica o tipo de conexão de Assinante usado pelo Agente de Distribuição.

Valor SubscriberType Descrição
0 SQL Server
1 Fonte de dados ODBC
3 Fonte de dados OLE DB

-SubscriptionStreams [ 0 | 1 | 2 | ... 64 ]

O número de conexões permitido por Agente de Distribuição para aplicar lotes de alterações em paralelo a um Assinante, mantendo muitas das características transacionais presentes ao usar um único thread. Para um Editor do SQL Server, há suporte para um intervalo de valores de 1 a 64.

Esse parâmetro não tem suporte ou deve ser 0 para assinantes que não sejam do SQL Server ou assinaturas ponto a ponto. Esse parâmetro é ignorado quando o snapshot está sendo aplicado no assinante pelo Distribution Agent.

Se uma das conexões falhar ao executar ou confirmar, todas as conexões anularão o lote atual e o agente usará um único fluxo para repetir os lotes com falha. Antes que essa fase de repetição seja concluída, pode haver inconsistências transacionais temporárias no Assinante. Depois que os lotes com falha são confirmados com êxito, o Assinante é trazido de volta a um estado de consistência transacional.

Importante

Quando você especifica um valor igual 2 ou superior para -SubscriptionStreams, a ordem em que as transações são recebidas no Assinante pode ser diferente da ordem em que foram feitas no Editor. Se esse comportamento causar violações de restrição durante a sincronização, você deve usar a NOT FOR REPLICATION opção para desabilitar a imposição de restrições durante a sincronização. Para obter mais informações, consulte Controlar o comportamento de gatilhos e restrições na sincronização.

Os fluxos de assinatura não funcionam para artigos configurados para fornecer Transact-SQL. Para usar fluxos de assinatura, configure artigos para entregar chamadas de procedimento armazenado.

-SubscriçãoTabelaNome subscription_table

O nome da tabela de subscrição gerada ou utilizada no Subscritor fornecido. Quando não especificado, a tabela MSreplication_subscriptions é usada. Use esta opção para sistemas de gerenciamento de banco de dados (DBMS) que não suportam nomes de arquivo longos.

-SubscriçãoTipo [ 0 | 1 | 2 ]

Especifica o tipo de assinatura para distribuição. Um valor de 0 indica uma assinatura push, um valor de 1 indica uma assinatura pull e um valor de 2 indica uma assinatura anônima.

-TransaçõesPerHistória [ 0 | 1 | ... 10000 ]

Especifica o intervalo de transação para o registro do histórico. Se o número de transações confirmadas após a última instância do registro de histórico for maior do que essa opção, uma mensagem de histórico será registrada. O padrão é 100. Um valor de 0 indica infinito TransactionsPerHistory. Consulte o parâmetro anterior –MessageInterval .

-UseDTS

Deve ser especificado como um parâmetro para uma publicação que permite a transformação de dados.

-UseInprocLoader

Melhora o desempenho do snapshot inicial, fazendo com que o Distribution Agent use o comando BULK INSERT ao aplicar arquivos de snapshot ao Assinante. Este parâmetro foi preterido porque não é compatível com o tipo de dados XML. Se você não estiver replicando dados XML, esse parâmetro poderá ser usado. Esse parâmetro não pode ser usado com instantâneos de modo de caractere ou assinantes que não sejam do SQL Server. Se você usar esse parâmetro, a conta de serviço do SQL Server no Assinante exigirá permissões de leitura no diretório onde os arquivos de dados de instantâneo .bcp estão localizados. Quando esse parâmetro não é usado, o agente (para Assinantes que não são do SQL Server) ou o driver ODBC carregado pelo agente (para Assinantes do SQL Server) lê os arquivos, portanto, o contexto de segurança da conta de serviço do SQL Server não é usado.

-UseOledbStream

Quando especificado, habilita a associação de dados de objeto binário grande como um fluxo. Use -OledbStreamThreshold para especificar o tamanho, em bytes, acima do qual um fluxo é usado. UseOledbStreaming está ativado por predefinição.

No SQL Server 2017 (14.x) 22 e versões posteriores, UseOledbStreaming grava na C:\Users\<DistributionAgentAccount>\AppData\Temp pasta.

Antes do SQL Server 2017 (14.x) 22, UseOledbStreaming grava na C:\Program Files\Microsoft SQL Server\<version>\COM pasta.

No SQL Server 2019 (15.x) 29, SQL Server 2022 (16.x) 16 e versões posteriores, você pode desabilitar o streaming OLE DB atualizando para evitar o erro mencionado na -UseOledbStreaming.0

Observações

Se você instalou o SQL Server Agent para ser executado em uma conta do sistema local em vez de em uma conta de usuário de domínio (o padrão), o serviço só poderá acessar o computador local. Se o Distribution Agent executado no SQL Server Agent estiver configurado para usar o Modo de Autenticação do Windows quando fizer logon em uma instância do SQL Server, o Distribution Agent falhará. A configuração padrão é Autenticação do SQL Server. Para obter informações sobre como alterar contas de segurança, consulte Exibir e modificar configurações de segurança de replicação.

Para iniciar o Distribution Agent, execute distrib.exe a partir do prompt de comando. Para obter informações, consulte Conceitos de executáveis do Replication Agent.