Condividi tramite


Replication Distribution Agent

Si applica a: SQL Server Database SQL di Azure

L'agente di distribuzione repliche è un eseguibile che sposta lo snapshot (per la replica snapshot e la replica transazionale) e le transazioni incluse nelle tabelle del database di distribuzione (per la replica transazionale) nelle tabelle di destinazione nei Sottoscrittori.

Nota

I parametri possono essere specificati in qualsiasi ordine. Quando i parametri facoltativi non vengono specificati, vengono usati i valori delle impostazioni predefinite del Registro di sistema nel computer locale.

Sintassi

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 ] ]
[ -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 ]

Argomenti

-?

Stampa tutti i parametri disponibili.

-Publisher server_name [ \instance_name ]

Nome del server di pubblicazione. Specificare <server_name> per l'istanza predefinita di Microsoft SQL Server in tale server. Specificare <server_name>\<instance_name> per un'istanza denominata di SQL Server in tale server. Se il database del server di pubblicazione si trova in un gruppo di disponibilità (AG), questo riflette comunque il nome del server di pubblicazione primario originale a causa di sp_redirect_publisher. Non riflette il nome del listener del gruppo di disponibilità.

-PublisherDB publisher_database

Nome del database del server di pubblicazione.

-Subscriber server_name [ \instance_name ]

Nome del Sottoscrittore. Specificare <server_name> per l'istanza predefinita di SQL Server in tale server. Specificare <server_name>\<instance_name> per un'istanza denominata di SQL Server in tale server. Se il database sottoscrittore si trova in un gruppo di disponibilità, deve riflettere il nome del listener del gruppo di disponibilità.

-SubscriberDB subscriber_database

Nome del database del Sottoscrittore.

-AltSnapshotFolder alt_snapshot_folder_path

Percorso della cartella che contiene lo snapshot iniziale per una sottoscrizione.

-BcpBatchSize bcp_batch_size

Numero di righe da inviare in un'operazione di copia bulk. Quando si esegue un'operazionebcp in, le dimensioni del batch sono il numero di righe da inviare al server come una transazione e anche il numero di righe che devono essere inviate prima del agente di distribuzione registra un messaggio di stato bcp. Quando si esegue un'operazione bcp out , viene usata una dimensione batch fissa di 1000 .

-CommitBatchSize commit_batch_size

Numero di transazioni da emettere nel Sottoscrittore prima dell'emissione di un'istruzione COMMIT. Il valore predefinito è 100 e il valore massimo è 10000. Questo parametro viene ignorato quando lo snapshot viene applicato al sottoscrittore dal agente di distribuzione.

-CommitBatchThreshold commit_batch_threshold

Numero di comandi di replica da eseguire al Sottoscrittore prima dell'emissione di un'istruzione COMMIT. Il valore predefinito è 1000 e il valore massimo è 10000. Questo parametro viene ignorato quando lo snapshot viene applicato al sottoscrittore dal agente di distribuzione.

-Continuous

Specifica se l'agente tenta di eseguire continuamente il polling delle transazioni replicate. Se specificato, l'agente esegue il polling delle transazioni replicate dall'origine in base agli intervalli di polling, anche se non vi sono transazioni in sospeso.

-DefinitionFile def_path_and_file_name

Percorso del file di definizione dell'agente. Un file di definizione dell'agente contiene argomenti del prompt dei comandi per l'agente. Il contenuto del file viene analizzato come file eseguibile. Utilizzare virgolette doppie (") per specificare valori dell'argomento contenenti caratteri arbitrari.

-Server di distribuzione

Nome del server di distribuzione. Per la distribuzione (push) del server di distribuzione, per impostazione predefinita viene utilizzato il nome del server di distribuzione locale. Se il database di distribuzione si trova in un gruppo di disponibilità, deve riflettere il nome del listener del gruppo di disponibilità.

-DistributorLogin distributor_login

Nome dell'account di accesso del server di distribuzione.

-DistributorPassword distributor_password

Password per il server di distribuzione.

-DistributorSecurityMode [ 0 | 1 ]

Specifica la modalità di sicurezza del database di distribuzione. Il valore 0 indica la modalità di autenticazione di SQL Server e il valore 1 indica la modalità di autenticazione di Windows (impostazione predefinita).

-EncryptionLevel [ 0 | 1 | 2 ]

Livello tls (Transport Layer Security), noto in precedenza come SSL (Secure Sockets Layer), crittografia usata dal agente di distribuzione durante l'esecuzione delle connessioni.

Valore di EncryptionLevel Descrizione
0 Specifica che TLS non viene usato.
1 Specifica che viene usato TLS, ma l'agente non verifica che il certificato del server TLS sia firmato da un'autorità emittente attendibile.
2 Specifica che TLS viene usato e che il certificato viene verificato.

Un certificato TLS valido viene definito con un nome di dominio completo di SQL Server. Affinché l'agente si connetta correttamente quando si imposta -EncryptionLevel su 2, creare un alias in SQL Server locale. Il parametro 'Nome alias' deve corrispondere al nome del server e il parametro 'Server' deve essere impostato sul nome completo dell'istanza di SQL Server.

Per altre informazioni, vedere View and Modify Replication Security Settings.

-ErrorFile error_path_and_file_name

Percorso e nome file del file di errore generato dal agente di distribuzione. Questo file viene generato in qualsiasi momento in cui si è verificato un errore durante l'applicazione delle transazioni di replica nel Sottoscrittore; gli errori che si verificano nel server di pubblicazione o nel server di distribuzione non vengono registrati in questo file. Il file contiene le transazioni di replica non riuscite e i relativi messaggi di errore. Se il percorso viene omesso, il file degli errori viene generato nella directory corrente dell'agente di distribuzione. Il file degli errori ha lo stesso nome dell'agente di distribuzione e ha un'estensione err. Se il nome file specificato esiste già, i messaggi di errore vengono aggiunti al file. Questo parametro può essere composto da un massimo di 256 caratteri Unicode.

-ExtendedEventConfigFile configuration_path_and_file_name

Consente di specificare il percorso e il nome del file di configurazione XML di eventi estesi. Il file di configurazione di eventi estesi consente di configurare sessioni e abilitare eventi per la traccia.

-FileTransferType [ 0 | 1 ]

Specifica il tipo di trasferimento di file. Un valore indica 0 UNC (universal naming convention) e un valore di 1 indica FTP (protocollo di trasferimento file).

-FtpAddress ftp_address

Indirizzo di rete del servizio FTP per il server di distribuzione. Se non specificato, DistributorAddress viene utilizzato . Se DistributorAddress non viene specificato, Distributor viene usato .

-FtpPassword ftp_password

Password dell'utente utilizzata per la connessione al servizio FTP.

-FtpPort ftp_port

Numero di porta del servizio FTP per il server di distribuzione. Quando non è specificato, viene utilizzato il numero di porta predefinito per il servizio FTP, ovvero 21.

-FtpUserName ftp_user_name

Nome utente utilizzato per la connessione al servizio FTP. Se non specificato, anonymous viene utilizzato .

-HistoryVerboseLevel [ 0 | 1 | 2 | 3 ]

Specifica la quantità di cronologia registrata durante un'operazione di distribuzione. È possibile ridurre al minimo l'effetto delle prestazioni della registrazione della cronologia selezionando 1.

Valore di HistoryVerboseLevel Descrizione
0 I messaggi di stato vengono scritti nella console o in un file di output. I record della cronologia non vengono registrati nel database di distribuzione.
1 (predefinito) Aggiorna sempre un messaggio di cronologia precedente con lo stesso stato (avvio, avanzamento, esito positivo e così via). Se non è presente un record precedente con lo stesso stato, inserisce un nuovo record.
2 Inserisce nuovi record della cronologia, a meno che il record sia per eventi come messaggi inattivi o messaggi di processo con esecuzione prolungata, nel qual caso aggiorna i record precedenti.
3 Inserire sempre nuovi record, a meno che non si tratti di messaggi inattive.

-Hostname host_name

Nome host utilizzato per la connessione al server di pubblicazione. Questo parametro può essere composto da un massimo di 128 caratteri Unicode.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

Il numero di secondi prima del thread di cronologia controlla se una delle connessioni esistenti è in attesa di una risposta dal server. Questo valore può essere ridotto per evitare che l'agente di controllo contrassegni l'agente di distribuzione come sospetto in caso di esecuzione di un batch con esecuzione prolungata. Il valore predefinito è 300 secondi.

-LoginTimeOut login_time_out_seconds

Numero di secondi prima del timeout dell'accesso. Il valore predefinito è 15 secondi.

-MaxBcpThreads number_of_threads

Specifica il numero di operazioni di copia bulk che possono essere eseguite in parallelo. Il numero massimo di thread e connessioni ODBC esistenti contemporaneamente è minore o il numero di MaxBcpThreads richieste di copia bulk visualizzate nella transazione di sincronizzazione nel database di distribuzione. MaxBcpThreads deve avere un valore maggiore di 0 e non ha un limite superiore hardcoded. Il valore predefinito è 2 il numero di processori, fino a un valore massimo di 8. Quando si applica uno snapshot generato nel server di pubblicazione usando l'opzione snapshot simultanea, viene usato un thread, indipendentemente dal numero specificato per MaxBcpThreads.

-MaxDeliveredTransactions number_of_transactions

Numero massimo di transazioni push o pull applicate ai Sottoscrittori in una sola sincronizzazione. Un valore indica 0 che il valore massimo è un numero infinito di transazioni. Nei Sottoscrittori possono venire utilizzati altri valori per abbreviare la durata di una sincronizzazione di cui viene effettuato il pull da un server di pubblicazione.

Se -MaxDeliveredTransactions e -Continuous sono entrambi specificati, il agente di distribuzione recapita il numero specificato di transazioni e quindi si arresta (anche se -Continuous è specificato). È necessario riavviare l'agente di distribuzione dopo il completamento del processo.

-MessageInterval message_interval

Intervallo di tempo utilizzato per la registrazione della cronologia. Viene registrato un evento della cronologia quando viene raggiunto uno di questi parametri:

  • Il TransactionsPerHistory valore viene raggiunto dopo la registrazione dell'ultimo evento di cronologia.

  • Il MessageInterval valore viene raggiunto dopo la registrazione dell'ultimo evento di cronologia.

Se non è disponibile alcuna transazione replicata nell'origine, l'agente segnala un messaggio di nessuna transazione al server di distribuzione. Questa opzione specifica per quanto tempo l'agente aspetta prima di inviare un altro messaggio di assenza di transazioni. Gli agenti inviano sempre un messaggio di assenza di transazioni quando rilevano che nell'origine non vi sono transazioni disponibili dopo aver elaborato in precedenza transazioni replicate. Il valore predefinito è 60 secondi.

-MultiSubnetFailover

Si applica a: SQL Server 2019 (15.x) e versioni successive.

Specifica se la proprietà MultiSubnetFailover è abilitata o meno. Se l'applicazione si connette a un gruppo di disponibilità in subnet diverse, l'impostazione di MultiSubnetFailover=true offre un rilevamento più rapido di e la connessione al server attivo (attualmente).

-OledbStreamThreshold oledb_stream_threshold

Specifica le dimensioni minime, in byte, per i dati di oggetti binari di grandi dimensioni sopra i quali i dati vengono associati come flusso. È necessario specificare -UseOledbStreaming per usare questo parametro. I valori possono variare da 400 byte a 1.048.576 byte, con un valore predefinito di 16.384 byte.

-Output output_path_and_file_name

Percorso del file di output dell'agente. Se il nome file non viene specificato, l'output viene inviato alla console. Se il nome file specificato esiste già, l'output viene aggiunto al file.

-OutputVerboseLevel [ 0 | 1 | 2 ]

Specifica se l'output deve essere dettagliato. Se il livello dettagliato è 0, vengono stampati solo i messaggi di errore. Se il livello dettagliato è 1, vengono stampati tutti i messaggi del report di stato. Se il livello dettagliato è 2 (impostazione predefinita), vengono stampati tutti i messaggi di errore e i messaggi del report di stato, utili per il debug.

-PacketSize packet_size

Dimensioni del pacchetto, in byte. Il valore predefinito è 4096 byte.

-PollingInterval polling_interval

Con quale frequenza, in secondi, viene eseguita una query sul database di distribuzione per le transazioni replicate. Il valore predefinito è 5 secondi.

-ProfileName profile_name

Specifica un profilo agente da utilizzare per i parametri dell'agente. Se ProfileName è NULL, il profilo dell'agente è disabilitato. Se ProfileName non viene specificato, viene usato il profilo predefinito per il tipo di agente. Per altre informazioni, vedere Profili degli agenti di replica.

Pubblicazione -Publication

Nome della pubblicazione. Questo parametro è valido solo se la pubblicazione è configurata in modo che sia sempre disponibile uno snapshot per le sottoscrizioni nuove o reinizializzate.

-QueryTimeOut query_time_out_seconds

Numero di secondi prima del timeout della query. Il valore predefinito è 1.800 secondi.

-QuotedIdentifier quoted_identifier

Specifica il carattere dell'identificatore tra virgolette da utilizzare. Il primo carattere del valore indica il valore utilizzato dall'agente di distribuzione. Se QuotedIdentifier viene utilizzato senza valore, il agente di distribuzione usa uno spazio. Se QuotedIdentifier non viene usato, il agente di distribuzione usa qualsiasi identificatore tra virgolette supportato dal Sottoscrittore.

-SkipErrors native_error_id [ :... n ]

Elenco delimitato da due punti che specifica i numeri di errore da ignorare da questo agente. Questo parametro viene ignorato quando lo snapshot viene applicato al sottoscrittore dal agente di distribuzione.

-SubscriberDatabasePath subscriber_database_path

Percorso del database Jet (file .mdb) se SubscriberType è 2 (consente una connessione a un database Jet senza un DSN (Odbc Data Source Name).

-SubscriberLogin subscriber_login

Nome dell'account di accesso del Sottoscrittore. Se SubscriberSecurityMode è 0 (per l'autenticazione di SQL Server), questo parametro deve essere specificato.

-SubscriberPassword subscriber_password

Password del Sottoscrittore. Se SubscriberSecurityMode è 0 (per l'autenticazione di SQL Server), questo parametro deve essere specificato.

-SubscriberSecurityMode [ 0 | 1 ]

Specifica la modalità di sicurezza del Sottoscrittore. Un valore indica l'autenticazione di 0 SQL Server e un valore indica la modalità di autenticazione di 1 Windows (impostazione predefinita).

-SubscriberType [ 0 | 1 | 3 ]

Specifica il tipo di connessione al Sottoscrittore utilizzata dall'agente di distribuzione.

Valore di SubscriberType Descrizione
0 SQL Server
1 Origine dati ODBC
3 Origine dati OLE DB

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

Numero di connessioni consentite per agente di distribuzione di applicare batch di modifiche in parallelo a un Sottoscrittore, mantenendo al tempo stesso molte delle caratteristiche transazionali presenti quando si usa un singolo thread. Per un server di pubblicazione di SQL Server, è supportato un intervallo di valori compreso tra 1 e 64.

Questo parametro non è supportato o deve essere 0 per sottoscrittori non SQL Server o sottoscrizioni peer-to-peer. Questo parametro viene ignorato quando lo snapshot viene applicato al sottoscrittore dal agente di distribuzione.

Se una delle connessioni non riesce a eseguire o eseguire il commit, tutte le connessioni interrompno il batch corrente e l'agente usa un singolo flusso per ritentare i batch non riusciti. Prima del completamento di questa fase di tentativi, possono verificarsi inconsistenze temporanee delle transazioni nel Sottoscrittore. Al termine del commit dei batch non riusciti, viene ripristinata la consistenza delle transazioni nel Sottoscrittore.

Importante

Quando si specifica un valore di 2 o maggiore per -SubscriptionStreams, l'ordine in cui le transazioni vengono ricevute nel Sottoscrittore potrebbe differire dall'ordine in cui sono state effettuate nel server di pubblicazione. Se questo comportamento causa violazioni dei vincoli durante la sincronizzazione, è consigliabile usare l'opzione NOT FOR REPLICATION per disabilitare l'imposizione dei vincoli durante la sincronizzazione. Per altre informazioni, vedere Controllare il comportamento dei trigger e dei vincoli nella sincronizzazione.

I flussi di sottoscrizione non funzionano per gli articoli configurati per il recapito di Transact-SQL. Per usare i flussi di sottoscrizione, configurare gli articoli per recapitare invece chiamate a stored procedure.

-SubscriptionTableName subscription_table

Nome della tabella di sottoscrizione generata o utilizzata nel Sottoscrittore specificato. Se non specificato, viene utilizzata la tabella MSreplication_subscriptions . Usare questa opzione per i sistemi di gestione di database (DBMS) che non supportano nomi di file lunghi.

-SubscriptionType [ 0 | 1 | 2 ]

Specifica il tipo di sottoscrizione per la distribuzione. Un valore indica 0 una sottoscrizione push, un valore di 1 indica una sottoscrizione pull e un valore di 2 indica una sottoscrizione anonima.

-TransactionsPerHistory [ 0 | 1 | ... 10000 ]

Specifica l'intervallo delle transazioni per la registrazione della cronologia. Se il numero di transazioni di cui è stato eseguito il commit dopo l'ultima istanza di registrazione della cronologia è maggiore rispetto al valore di questa opzione, viene registrato un messaggio di cronologia. L'impostazione predefinita è 100. Il valore indica 0 un valore infinito TransactionsPerHistory. Vedere il parametro precedente –MessageInterval.

-UseDTS

Deve essere specificato come parametro per una pubblicazione che consente la trasformazione dei dati.

-UseInprocLoader

Migliora le prestazioni dello snapshot iniziale facendo in modo che l'agente di distribuzione utilizzi il comando BULK INSERT in caso di applicazione dei file di snapshot al Sottoscrittore. Questo parametro è deprecato perché non è compatibile con il tipo di dati XML. Se non si replicano dati XML, è possibile usare questo parametro. Questo parametro non può essere usato con snapshot in modalità carattere o sottoscrittori non SQL Server. Se si usa questo parametro, l'account del servizio SQL Server nel Sottoscrittore richiede autorizzazioni di lettura per la directory in cui si trovano i file di dati dello snapshot .bcp . Quando questo parametro non viene usato, l'agente (per sottoscrittori non SQL Server) o il driver ODBC caricato dall'agente (per i Sottoscrittori di SQL Server) legge dai file, quindi il contesto di sicurezza dell'account del servizio SQL Server non viene usato.

-UseOledbStream

Se specificato, consente l'associazione di dati BLOB (Binary Large Object) come flusso. Usare -OledbStreamThreshold per specificare le dimensioni, in byte, sopra le quali viene usato un flusso. UseOledbStreaming è abilitato per impostazione predefinita.

In SQL Server 2017 (14.x) CU 22 e versioni successive scrive UseOledbStreaming nella C:\Users\<DistributionAgentAccount>\AppData\Temp cartella .

Prima di SQL Server 2017 (14.x) CU 22, UseOledbStreaming scrive nella C:\Program Files\Microsoft SQL Server\<version>\COM cartella .

In SQL Server 2019 (15.x) CU 29 è possibile disabilitare lo streaming OLE DB aggiornando -UseOledbStreaming per 0 evitare l'errore indicato nel messaggio di errore quando si esegue il agente di distribuzione in SQL Server.

Osservazioni:

Se SQL Server Agent è stato installato per l'esecuzione con un account di sistema locale anziché con un account utente di dominio (impostazione predefinita), il servizio può accedere solo al computer locale. Se la agente di distribuzione eseguita in SQL Server Agent è configurata per l'uso della modalità di autenticazione di Windows quando accede a un'istanza di SQL Server, il agente di distribuzione ha esito negativo. L'impostazione predefinita è Autenticazione di SQL Server. Per informazioni sulla modifica degli account di sicurezza, vedere View and Modify Replication Security Settings.

Per avviare il agente di distribuzione, eseguire distrib.exe dal prompt dei comandi. Per informazioni, vedere Concetti di base relativi ai file eseguibili dell'agente di replica.