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.

-Publisherserver_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à Always On, questo rifletterà comunque il nome del server di pubblicazione primario originale a causa di sp_redirect_publisher. Non rifletterà il nome del listener del gruppo di disponibilità.

-PublisherDBpublisher_database
Nome del database del server di pubblicazione.

-Subscriberserver_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 del sottoscrittore si trova in un gruppo di disponibilità Always On, deve riflettere il nome del listener del gruppo di disponibilità.

-SubscriberDBsubscriber_database
Nome del database Sottoscrittore.

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

-BcpBatchSizebcp_batch_size
Numero di righe da inviare in un'operazione di copia bulk. Quando si esegue un'operazione bcp in , la dimensione del batch indica il numero di righe da inviare al server come unica transazione, nonché il numero di righe che devono essere inviate prima che l'agente di distribuzione registri un messaggio di stato bcp . Quando si esegue un'operazione bcp out , viene usata una dimensione batch fissa di 1000 .

-CommitBatchSizecommit_batch_size
Numero di transazioni da eseguire nel Sottoscrittore prima di eseguire 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.

-CommitBatchThresholdcommit_batch_threshold
Numero di comandi di replica da eseguire nel Sottoscrittore prima di eseguire 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.

-DefinitionFiledef_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.

-Distributordistributor
Nome del database 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à AlwaysOn, questo dovrebbe riflettere il nome del listener del gruppo di disponibilità.

-DistributorLogindistributor_login
Nome dell'account di accesso del database di distribuzione.

-DistributorPassworddistributor_password
Password del database 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 di crittografia TLS (Transport Layer Security) noto in precedenza come SSL (Secure Sockets Layer) usato dall'agente di distribuzione quando vengono stabilite le connessioni.

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

Nota

Un certificato TLS/SSL valido è definito con un nome di dominio completo di SQL Server. Affinché l'agente possa connettersi correttamente quando si imposta - EncryptionLevel su 2, creare un alias nel Server SQL 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 Visualizzare e modificare le impostazioni di sicurezza della replica.

-ErrorFileerror_path_and_file_name
Percorso e nome del file degli errori generato dall'agente di distribuzione. Tale file viene generato nel punto in cui si verifica l'errore durante l'applicazione delle transazioni di replica nel Sottoscrittore. Gli errori che si verificano nel server di pubblicazione e 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.

-ExtendedEventConfigFileconfiguration_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 0 indica UNC (Universal Naming Convention), mentre un valore 1 indica FTP (File Transfer Protocol).

-FtpAddressftp_address
Indirizzo di rete del servizio FTP per il database di distribuzione. Quando non è specificato, viene utilizzato DistributorAddress . Se DistributorAddress non è specificato, viene utilizzato Distributor .

-FtpPasswordftp_password
Password utente utilizzata per la connessione al servizio FTP.

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

-FtpUserNamenome_utente_ftp
Nome utente utilizzato per la connessione al servizio FTP. Quando non è specificato, viene utilizzato anonymous .

-HistoryVerboseLevel [ 0 | 1 | 2 | 3]
Specifica la quantità di cronologia registrata durante un'operazione di distribuzione. Per ridurre al minimo l'effetto della registrazione della cronologia sulle prestazioni, selezionare 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 Inserisce sempre nuovi record, a meno che non si tratti di record per messaggi inattivi.

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

-KeepAliveMessageIntervalkeep_alive_message_interval_seconds
Numero di secondi prima che il thread per la cronologia controlli 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.

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

-MaxBcpThreadsnumber_of_threads
Specifica il numero di operazioni di copia bulk che possono essere eseguite in parallelo. Il numero massimo di connessioni ODBC e thread presenti simultaneamente corrisponde a MaxBcpThreads o al numero di richieste di copia bulk presenti nella transazione di sincronizzazione nel database di distribuzione, a seconda di quale sia il valore minore. MaxBcpThreads deve avere un valore maggiore di 0 e non ha un limite massimo specificato a livello di codice. L'impostazione predefinita è 2 volte il numero di processori, fino a un valore massimo di 8. Quando si applica uno snapshot generato nel server di pubblicazione usando l'opzione relativa agli snapshot simultanei, viene usato un thread, indipendentemente dal numero specificato per MaxBcpThreads.

-MaxDeliveredTransactionsnumber_of_transactions
Numero massimo di transazioni push o pull applicate ai Sottoscrittori in una sincronizzazione. Un valore 0 indica che il numero massimo corrisponde a 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.

Nota

Se - MaxDeliveredTransactions e - Continuous sono entrambi specificati, tramite l'agente di distribuzione viene recapitato il numero specificato di transazioni e successivamente tale agente viene arrestato (anche se è specificato -Continuous). È necessario riavviare l'agente di distribuzione dopo il completamento del processo.

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

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

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

Se nell'origine non vi sono transazioni replicate disponibili, tramite l'agente viene inviato al server di distribuzione un messaggio che segnala l'assenza di transazioni. 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 specifica se la proprietà MultiSubnetFailover è abilitata o meno. Se l'applicazione si connette a un gruppo di disponibilità Always On in subnet diverse, l'impostazione di MultiSubnetFailover=true consente di rilevare e connettere più rapidamente il server attivo (attualmente).
Si applica a: SQL Server (a partire da SQL Server 2019 (15.x)).

-OledbStreamThresholdoledb_stream_threshold
Viene specificata la dimensione minima, in byte, per i dati BLOB (Binary Large Object), sopra la quale i dati verranno associati come flusso. Per usare questo parametro, è necessario specificare -UseOledbStreaming. I possibili valori sono compresi tra 400 e 1048576 byte. Il valore predefinito è 16384 byte.

-Outputoutput_path_and_file_name
Percorso del file di output dell'agente. Se non viene specificato il nome file, 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 di dettaglio è 0, vengono stampati solo i messaggi di errore. Se il livello di dettaglio è 1, vengono stampati tutti i messaggi di report di stato. Se il livello di dettaglio è 2 (impostazione predefinita), vengono stampati tutti i messaggi di errore e i messaggi di report di stato. Questa opzione è utile per l'esecuzione del debug.

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

-PollingIntervalpolling_interval_
Frequenza, in secondi, di esecuzione di query sul database di distribuzione per le transazioni replicate. Il valore predefinito è 5 secondi.

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

-Publicationpubblicazione
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.

-QueryTimeOutquery_time_out_seconds
Numero di secondi prima del timeout della query. Il valore predefinito è 1800 secondi.

-QuotedIdentifierquoted_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 usato senza valore, l'agente di distribuzione usa uno spazio. Se QuotedIdentifier non viene usato, l'agente di distribuzione usa qualsiasi identificatore delimitato tra virgolette supportato dal Sottoscrittore.

-SkipErrorsnative_error_id [:...n]
Elenco delimitato da due punti che specifica i numeri di errore che devono essere ignorati dall'agente. Questo parametro viene ignorato quando lo snapshot viene applicato al sottoscrittore dal agente di distribuzione.

-SubscriberDatabasePathsubscriber_database_path
Percorso del database Jet (file con estensione mdb) se SubscriberType è 2 (consente una connessione a un database Jet senza un nome origine dati (DNS, Data Source Name) ODBC).

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

-SubscriberPasswordsubscriber_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. Il valore 0 indica l'autenticazione di SQL Server e il valore 1 indica la modalità di autenticazione di 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 per l'applicazione di batch di modifiche in parallelo a un Sottoscrittore, conservando molte delle caratteristiche transazionali disponibili quando si utilizza un singolo thread. Per un server di pubblicazione di SQL Server, è supportato un intervallo di valori compreso tra 1 e 64. Questo parametro è supportato solo quando il server di pubblicazione e il server di distribuzione sono in esecuzione in SQL Server 2005 (9.x) o versioni successive. 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.

Nota

Se si verifica un errore di esecuzione o di commit di una delle connessioni, tutte le connessioni interromperanno il batch corrente e l'agente utilizzerà un singolo flusso per ripetere 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 maggiore o uguale a 2 per -SubscriptionStreams, l'ordine di ricezione delle transazioni nel Sottoscrittore può essere diverso dall'ordine di esecuzione di tali transazioni nel server di pubblicazione. Se questo comportamento provoca violazioni di vincoli durante la sincronizzazione, è necessario utilizzare l'opzione NOT FOR REPLICATION per disabilitare l'imposizione di vincoli durante la sincronizzazione. Per altre informazioni, vedere Controllare il comportamento di trigger e vincoli durante la sincronizzazione (programmazione Transact-SQL della replica).

Nota

I flussi di sottoscrizioni non funzionano per gli articoli configurati per il recapito di Transact-SQL. Per utilizzare subscriptionstreams, configurare gli articoli per fornire invece chiamate di stored procedure.

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

-SubscriptionType [ 0| 1| 2]
Specifica il tipo di sottoscrizione per la distribuzione. Un valore 0 indica una sottoscrizione push, un valore 1 indica una sottoscrizione pull e un valore 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. Un valore di 0 indica TransactionsPerHistoryinfinito. See the preceding –MessageIntervalparameter.

-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 in quanto non è compatibile con il tipo di dati XML. Se non si sta eseguendo la replica di dati XML, è possibile utilizzare 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 deve disporre delle autorizzazioni di lettura per la directory in cui si trovano i file di dati con estensione bcp snapshot. 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.

-UseOledbStreaming
Se specificato, consente l'associazione di dati BLOB (Binary Large Object) come flusso. Usare -OledbStreamThreshold per specificare la dimensione, in byte, oltre la quale verrà usato un flusso. UseOledbStreaming è abilitato per impostazione predefinita.

Nota

A partire da SQL 2017 CU22 e versioni successive (incluso SQL 2019 RTM), UseOledbStreaming scrive nella cartella c:\Users\<DistributionAgentAccount>\AppData\Temp .

Prima di SQL 2017 CU22, UseOledbStreaming scrive nella cartella C:\Programmi\Microsoft SQL Server\<version>\COM .

Osservazioni:

Importante

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 l'agente di distribuzione, eseguire distrib.exe dal prompt dei comandi. Per informazioni, vedere Concetti di base relativi ai file eseguibili dell'agente di replica.

Cronologia delle modifiche

Contenuto aggiornato
Aggiunta del parametro -ExtendedEventConfigFile .
Aggiunta del parametro -MultiSubnetFailover.

Vedi anche

Amministrazione dell'agente di replica