Condividi tramite


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 non vengono specificati parametri facoltativi, vengono usati valori predefiniti basati sul profilo dell'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.

-Publisher server_name [ \instance_name ]

Nome del server di pubblicazione. 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.

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

-DefinitionFile def_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. Usare le virgolette doppie (") per specificare i valori degli argomenti che contengono caratteri arbitrari.

-Distributor server_name [ \instance_name ]

Nome del server 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.

-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. Un valore indica 0 la modalità di autenticazione di SQL Server (impostazione predefinita) e un valore indica la modalità di autenticazione di 1 Windows.

-EncryptionLevel [ 0 | 1 | 2 ]

Livello di Transport Layer Security (TLS), noto in precedenza come SSL (Secure Sockets Layer), crittografia usata dall'agente di lettura log 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.

Nota

Un certificato TLS/SSL valido è 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.

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

-HistoryVerboseLevel [ 0 | 1 | 2 ]

Consente di specificare la quantità di cronologia registrata durante un'operazione dell'agente di lettura log. È possibile ridurre al minimo l'effetto delle prestazioni della registrazione della cronologia selezionando 1.

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

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

-LogScanThreshold scan_threshold

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

-MaxCmdsInTran number_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. Poiché la transazione originale viene applicata in unità più piccole, il Sottoscrittore può accedere alle righe di una transazione di server di pubblicazione logico di grandi dimensioni prima della fine della transazione originale, interrompendo l'atomicità transazionale rigorosa. Il valore predefinito è 0, che mantiene i limiti delle transazioni del server di pubblicazione.

Questo parametro viene ignorato per le pubblicazioni non SQL Server. Per altre informazioni, vedere Configurazione del processo del set di transazioni.

MaxCmdsInTran non era progettato per essere sempre attivato. Funziona nei casi in cui un utente ha eseguito accidentalmente un numero elevato di operazioni DML in una singola transazione. Ciò causa un ritardo nella distribuzione dei comandi, fino a quando l'intera transazione non si trova nel database di distribuzione, i blocchi mantenuti e così via. Se si rientra regolarmente in questa situazione, esaminare le applicazioni e trovare modi per ridurre le dimensioni delle transazioni.

Avviso

Gli errori di chiave primaria possono verificarsi se il parametro viene aggiunto e rimosso durante la MaxCmdsInTran replica di una transazione di grandi dimensioni. Per risolvere gli errori di chiave primaria nelle transazioni di grandi dimensioni, aggiungere di nuovo il MaxCmdsInTran parametro fino a quando la transazione non viene replicata nel database di distribuzione.

L'uso del MaxCmdsInTran parametro in un database con Change Data Capture (CDC) e la replica abilitata non è supportato e può causare la perdita di dati nelle tabelle delle modifiche CDC.

-MessageInterval message_interval

Intervallo di tempo utilizzato per la registrazione della cronologia. Un evento di cronologia viene registrato quando viene raggiunto il MessageInterval valore 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 [ 0 | 1 ]

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à 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. In SQL Server 2022 (16.x) CU 10 e versioni successive è stata apportata una modifica alla configurazione del server collegato dinamico. Per altre informazioni, vedere KB5031778.

-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 | 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 (predefinito) 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.

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

-PublisherFailoverPartner server_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. Un valore indica l'autenticazione di 0 SQL Server (impostazione predefinita) e un valore indica la modalità di autenticazione di 1 Windows.

-PublisherLogin publisher_login

Nome dell'account di accesso del server di pubblicazione.

-PublisherPassword publisher_password

Password del server di pubblicazione.

-QueryTimeOut query_time_out_seconds

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

-ReadBatchSize number_of_transactions

Numero massimo di transazioni lette dal log delle transazioni del database di pubblicazione per ciclo di elaborazione, con un valore predefinito pari a 500 e massimo di 10000. L'agente continua a leggere le transazioni in batch finché tutte le transazioni non vengono lette dal log. Questo parametro non è supportato per i server di pubblicazione Oracle.

-ReadBatchThreshold number_of_commands

Numero di comandi di replica da leggere dal log delle transazioni prima di essere rilasciati al Sottoscrittore dal agente di distribuzione. Il valore predefinito è 0. Se questo parametro non è specificato, l'agente di lettura log legge fino alla fine del log o 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 errati vengono replicati come NULL o un 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:

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.