Replication Log Reader Agent

Si applica a:SQL Server Istanza gestita di SQL di Azure

L'Agente di lettura registro di replica è un eseguibile che monitora il registro delle transazioni di ogni database configurato per la replica transazionale e copia le transazioni contrassegnate per la replica dal registro delle transazioni nel database di distribuzione.

Nota

I parametri possono essere specificati in qualsiasi ordine. Quando i parametri facoltativi non vengono specificati, vengono utilizzati i valori predefiniti basati sul profilo agente predefinito.

Sintassi

  
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]  

Argomenti

-?
Visualizza informazioni sull'utilizzo.

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

-PublisherDBpublisher_database
Nome del database del server di pubblicazione.

-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 della riga di comando per l'agente. Il contenuto del file viene analizzato come file eseguibile. Utilizzare virgolette doppie (") per specificare valori dell'argomento contenenti caratteri arbitrari.

-Distributorserver_name[\instance_name]
Nome del database di distribuzione. 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.

-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 (impostazione predefinita) e il valore 1 indica la modalità di autenticazione di Microsoft Windows.

-EncryptionLevel [ 0 | 1 | 2 ]
Livello di crittografia TLS (Transport Layer Security), noto in precedenza come SSL (Secure Sockets Layer), usato dall'agente di lettura log 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.

-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.
Solo per uso interno.

-HistoryVerboseLevel [ 0| 1| 2]
Consente di specificare la quantità di cronologia registrata durante un'operazione dell'agente di lettura log. Per ridurre al minimo l'effetto della registrazione della cronologia sulle prestazioni, selezionare 1.

Valore di HistoryVerboseLevel Descrizione
0
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.

-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 lettura log 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.

-LogScanThresholdscan_threshold
Solo per uso interno.

-MaxCmdsInTrannumber_of_commands
Specifica il numero massimo di istruzioni raggruppate in una transazione durante la scrittura dei comandi nel database di distribuzione da parte dell'agente di lettura log. L'utilizzo di questo parametro consente all'agente di lettura log e all'agente di distribuzione di dividere le transazioni di grandi dimensioni, ovvero costituite da molti comandi, nel server di pubblicazione in diverse transazioni più piccole quando applicate al Sottoscrittore. Può inoltre ridurre la possibilità che si verifichino contese nel server di distribuzione e diminuire la latenza tra il server di pubblicazione e il Sottoscrittore. Dal momento che la transazione originale viene applicata in unità più piccole, il Sottoscrittore può accedere alle righe di una vasta transazione logica del server di pubblicazione prima della fine della transazione originale, violando la rigida atomicità transazionale. Il valore predefinito è 0, che consente di mantenere i limiti delle transazioni del server di pubblicazione.

Nota

Questo parametro viene ignorato per le pubblicazioni non di SQL Server. Per ulteriori informazioni, vedere la sezione "Configurazione del processo del set di transazioni" in Performance Tuning for Oracle Publishers.

Avviso

MaxCmdsInTran non è stato progettato per essere sempre abilitato. Esiste per risolvere i casi in cui un utente ha eseguito accidentalmente un numero elevato di operazioni DML in una singola transazione (causando un ritardo nella distribuzione dei comandi fino a quando l'intera transazione non si trova nel database di distribuzione, blocchi mantenuti e così via). Se periodicamente si verifica questa situazione, esaminare le applicazioni e trovare un modo per ridurre le dimensioni delle transazioni.

Avviso

MaxCmdsInTran non è supportato se il database di pubblicazione specificato è abilitato sia per Change Data Capture che per la replica. L'uso di MaxCmdsInTran in questa configurazione può causare la perdita di dati nelle tabelle delle modifiche CDC. Può anche causare errori PK se il parametro MaxCmdsInTran viene aggiunto e rimosso durante la replica di una transazione di grandi dimensioni.

-MessageIntervalintervallo_messaggi
Intervallo di tempo utilizzato per la registrazione della cronologia. Un evento della cronologia viene registrato quando viene raggiunto il valore di MessageInterval 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 [0|1] 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 su 1 (true) consente di rilevare e connettere più velocemente il server attivo (attualmente).

Quando si configura una pubblicazione transazionale in un gruppo di disponibilità, l'agente di lettura log crea un server collegato dinamico per il listener per verificare i metadati. A partire da SQL Server 2022 CU10, è stata apportata una modifica alla configurazione del server collegato dinamico. Per altre informazioni, vedere KB5031778.

Si applica a: SQL Server (a partire da SQL Server 2019 (15.x)).

-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 | 3 | 4 ]
Specifica se l'output deve essere dettagliato.

Valore Descrizione
0 Vengono stampati solo i messaggi di errore.
1 Vengono stampati tutti i messaggi di report di stato dell'agente.
2 (impostazione predefinita) Vengono stampati tutti i messaggi di errore e i messaggi di report di stato dell'agente.
3 Vengono stampati i primi 100 byte di ogni comando replicato.
4 Vengono stampati tutti i comandi replicati.

I valori 2-4 sono utili quando si esegue il debug.

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

-PollingIntervalpolling_interval
Frequenza, in secondi, di esecuzione di query sul log 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.

-PublisherFailoverPartnerserver_name[\instance_name]
Specifica l'istanza partner di failover di SQL Server che partecipa a una sessione di mirroring del database con il database di pubblicazione. Per altre informazioni, vedere Mirroring e replica del database (SQL Server).

-PublisherSecurityMode [ 0| 1]
Specifica la modalità di sicurezza del server di pubblicazione. Il valore 0 indica l'autenticazione di SQL Server (impostazione predefinita) e il valore 1 indica la modalità di autenticazione di Windows.

-PublisherLoginpublisher_login
Nome dell'account di accesso del server di pubblicazione.

-PublisherPasswordpassword_server_pubblicazione
Password del server di pubblicazione.

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

-ReadBatchSizenumber_of_transactions
Numero massimo di transazioni lette dal log delle transazioni del database di pubblicazione per ciclo di elaborazione, con un valore predefinito di 500 e un valore massimo di 10000. L'agente continuerà a leggere transazioni nei batch fino a quando viene completata la lettura di tutte le transazioni nel log. Questo parametro non è supportato per i server di pubblicazione Oracle.

-ReadBatchThresholdnumber_of_commands
Numero di comandi di replica da leggere dal log delle transazioni prima del rilascio al Sottoscrittore da parte dell'agente di distribuzione. Il valore predefinito è 0. Se questo parametro non è specificato, l'agente di lettura log leggerà fino alla fine del log o fino al numero specificato in -ReadBatchSize (numero di transazioni).

-RecoverFromDataErrors
Specifica che l'esecuzione dell'agente di lettura continua anche nel caso in cui vengano rilevati errori nei dati di colonna pubblicati da un server di pubblicazione non SQL Server. Per impostazione predefinita, tali errori comportano l'interruzione dell'agente di lettura log. Quando si utilizza -RecoverFromDataErrors, i dati di colonna erronei vengono replicati come NULL o come valore non Null appropriato e i messaggi di avviso vengono registrati nella tabella MSlogreader_history . Questo parametro è supportato solo per i server di pubblicazione Oracle.

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 l'agente di lettura log eseguito in SQL Server Agent è configurato per l'uso della modalità di autenticazione di Windows quando accede a SQL Server, l'agente di lettura log 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 lettura log, eseguire logread.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