Replikationsprotokolllese-Agent

Gilt für:SQL ServerAzure SQL Managed Instance

Der Replikationsprotokolllese-Agent ist eine ausführbare Datei, die das Transaktionsprotokoll jeder für die Transaktionsreplikation konfigurierten Datenbank überwacht und die für die Replikation markierten Transaktionen aus dem Transaktionsprotokoll in die Verteilungsdatenbank kopiert.

Hinweis

Parameter können in beliebiger Reihenfolge angegeben werden. Wenn keine optionalen Parameter angegeben werden, werden vordefinierte Werte auf Grundlage des Standardagentprofils verwendet.

Syntax

  
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]  

Argumente

-?
Zeigt Informationen zur Nutzung an.

-Publisherserver_name[\instance_name]
Der Name des Verlegers. Geben Sie server_name für die Standardinstanz von Microsoft SQL Server auf diesem Server an. Geben Sie server_name\instance_name für eine benannte Instanz von SQL Server auf diesem Server an.

-PublisherDBpublisher_database
Der Name der Verlegerdatenbank.

-Continuous
Gibt an, ob der Agent fortlaufend versucht, replizierte Transaktionen abzurufen. Wenn dieses Argument angegeben ist, ruft der Agent replizierte Transaktionen in festgelegten Abrufintervallen aus der Quelle ab, selbst wenn keine ausstehenden Transaktionen vorhanden sind.

-DefinitionFiledef_path_and_file_name
Der Pfad der Agentdefinitionsdatei. Eine Agentdefinitionsdatei enthält Befehlszeilenargumente für den Agent. Der Inhalt der Datei wird als ausführbare Datei analysiert. Verwenden Sie doppelte Anführungszeichen ("), um Argumentwerte anzugeben, die beliebige Zeichen enthalten.

-Distributorserver_name[\instance_name]
Der Name des Verteilers. Geben Sie server_name für die Standardinstanz von SQL Server auf diesem Server an. Geben Sie server_name\instance_name für eine benannte Instanz von SQL Server auf diesem Server an.

-DistributorLogindistributor_login
Der Anmeldename des Verteilers.

-DistributorPassworddistributor_password
Das Verteilerkennwort.

-DistributorSecurityMode [ 0| 1]
Gibt den Sicherheitsmodus des Verteilers an. Der Wert 0 gibt den SQL Server-Authentifizierungsmodus (Standard) an, und ein Wert von 1 gibt den Microsoft Windows-Authentifizierungsmodus an.

-EncryptionLevel [ 0 | 1 | 2 ]
Dies ist die Verschlüsselungsebene der Transport Layer Security (TLS, früher als Secure Sockets Layer, SSL, bezeichnet), die vom Protokolllese-Agent beim Herstellen von Verbindungen verwendet wird.

Wert von EncryptionLevel Beschreibung
0 Gibt an, dass TLS nicht verwendet wird.
1 Gibt an, dass TLS verwendet wird, der Agent jedoch nicht überprüft, ob das TLS/SSL-Serverzertifikat von einem vertrauenswürdigen Aussteller signiert wurde.
2 Gibt an, dass TLS verwendet und das Zertifikat überprüft wird.

Hinweis

Ein gültiges TLS/SSL-Zertifikat wird mit dem vollqualifizierten Domänennamen der SQL Server-Instanz definiert. Damit der Agent die Verbindung erfolgreich herstellen kann, wenn „-EncryptionLevel“ auf 2 festgelegt ist, sollten Sie einen Alias auf der lokalen SQL Server-Instanz erstellen. Der Parameter „Alias Name“ sollte den Servernamen enthalten, und für den Parameter „Server“ sollte der vollqualifizierte Name der SQL Server-Instanz festgelegt werden.

Weitere Informationen finden Sie unter Anzeigen und Ändern von Replikationssicherheitseinstellungen.

-ExtendedEventConfigFileconfiguration_path_and_file_name
Gibt den Pfad und den Dateinamen für die erweiterte Ereignis-XML-Konfigurationsdatei an. Die erweiterten Ereignis-Konfigurationsdatei ermöglicht das Konfigurieren von Sitzungen und das Aktivieren der Nachverfolgung für Ereignisse.
Nur zur internen Verwendung.

-HistoryVerboseLevel [ 0| 1| 2]
Gibt den Umfang des Verlaufs an, der während eines Vorgangs des Protokolllese-Agents protokolliert wird. Sie können die negativen Auswirkungen der Verlaufsprotokollierung auf die Leistung minimieren, indem Sie den Wert 1auswählen.

Wert von HistoryVerboseLevel Beschreibung
0
1 Standard. Aktualisieren Sie immer eine vorherige Verlaufsmeldung mit dem gleichen Status (Start, Status, Erfolg usw.). Wenn kein vorheriger Datensatz mit dem gleichen Status vorhanden ist, fügen Sie einen neuen Datensatz ein.
2 Fügen Sie neue Verlaufsdatensätze ein, es sei denn, der Datensatz bezieht sich z. B. auf Leerlaufmeldungen oder Meldungen zu Aufträgen mit langer Ausführungszeit. In diesen Fällen aktualisieren Sie die vorherigen Datensätze.

-KeepAliveMessageIntervalkeep_alive_message_interval_seconds
Die Anzahl von Sekunden, bevor vom Verlaufsthread geprüft wird, ob bestehende Verbindungen auf eine Antwort vom Server warten. Dieser Wert kann verringert werden, damit der Protokolllese-Agent vom Überprüfungs-Agent nicht als fehlerverdächtig markiert wird, wenn ein lang andauernder Batch ausgeführt wird. Der Standardwert ist 300 Sekunden.

-LoginTimeOutlogin_time_out_seconds
Ist die Anzahl der Sekunden, bevor die Anmeldezeitüberschreitung erfolgt. Der Standardwert ist 15 Sekunden.

-LogScanThresholdscan_threshold
Nur zur internen Verwendung.

-MaxCmdsInTrannumber_of_commands
Gibt die maximale Anzahl von Anweisungen an, die in einer Transaktion zusammengefasst werden, wenn der Protokolllese-Agent Befehle in die Verteilungsdatenbank schreibt. Mithilfe dieses Parameters können der Protokolllese-Agent und der Verteilungs-Agent beim Anwenden auf dem Abonnenten umfangreiche Transaktionen (die aus zahlreichen Befehlen bestehen) auf dem Verleger in mehrere kleinere Transaktionen aufteilen. Durch die Angabe dieses Parameters kommt es auf dem Verteiler möglicherweise zu weniger Konflikten, und die Latenzzeit zwischen Verleger und Abonnent kann reduziert werden. Da die ursprüngliche Transaktion in kleineren Einheiten angewendet wird, kann der Abonnent vor Ende der ursprünglichen Transaktion auf Zeilen einer umfangreichen logischen Verleger-Transaktion zugreifen; dies widerspricht der strikten Unteilbarkeit von Transaktionen. 0ist der Standardwert, durch den die Transaktionsgrenzen des Verlegers beibehalten werden.

Hinweis

Dieser Parameter wird für Nicht-SQL Server-Publikationen ignoriert. Weitere Informationen finden Sie im Abschnitt "Konfigurieren des Transaktionssatz-Auftrags" unter Performance Tuning for Oracle Publishers.

Warnung

MaxCmdsInTran ist nicht auf die dauerhafte Aktivierung ausgelegt. Es besteht darin, Fälle zu umgehen, in denen jemand versehentlich eine große Anzahl von DML-Vorgängen in einer einzelnen Transaktion ausgeführt hat (was zu einer Verzögerung bei der Verteilung von Befehlen führt, bis sich die gesamte Transaktion in der Verteilungsdatenbank befindet, Sperren gehalten werden usw.). Wenn diese Situation häufiger auftritt, überarbeiten Sie Ihre Anwendungen, und suchen Sie nach Möglichkeiten, die Transaktionsgröße zu verringern.

Warnung

MaxCmdsInTran wird nicht unterstützt, wenn die angegebene Publikationsdatenbank sowohl für die Änderungsdatenerfassung als auch für die Replikation aktiviert ist. Die Verwendung von MaxCmdsInTran in dieser Konfiguration kann zu Datenverlusten in CDC-Änderungstabellen führen. Es kann auch PK-Fehler verursachen, wenn der Parameter MaxCmdsInTran hinzugefügt und entfernt wird, während eine große Transaktion repliziert wird.

-MessageIntervalMeldungsintervall
Das für die Verlaufsprotokollierung verwendete Zeitintervall. Wenn nach der Protokollierung des letzten Verlaufsereignisses der Wert von MessageInterval erreicht wird, wird erneut ein Verlaufsereignis protokolliert.

Wenn an der Quelle keine replizierte Transaktion vorhanden ist, sendet der Agent eine entsprechende Meldung an den Verteiler. Mit dieser Option wird angegeben, wie lange der Agent wartet, bevor eine weitere Meldung gesendet wird, dass keine Transaktion vorhanden ist. Agents melden immer, dass keine Transaktion vorhanden ist, wenn sie feststellen, dass an der Quelle keine Transaktionen verfügbar sind, nachdem zuvor replizierte Transaktionen verarbeitet wurden. Der Standardwert ist 60 Sekunden.

-MultiSubnetFailover [0|1] gibt an, ob die MultiSubnetFailover-Eigenschaft aktiviert ist. Wenn Ihre Anwendung eine Verbindung mit einer Always On-Verfügbarkeitsgruppe (AG) in verschiedenen Subnetzen herstellt, bietet das Festlegen von MultiSubnetFailover auf 1 (true) eine schnellere Erkennung und Verbindung mit dem (derzeit) aktiven Server.

Wenn Sie eine Transaktionspublikation für eine AG konfigurieren, erstellt der Log Reader-Agent einen dynamischen verknüpften Server für den Listener, um die Metadaten zu überprüfen. Ab SQL Server 2022 CU10 gibt es eine Änderung der Konfiguration des dynamischen verknüpften Servers. Weitere Informationen finden Sie unter KB5031778.

Gilt für: SQL Server (ab SQL Server 2019 (15.x)).

-Outputoutput_path_and_file_name
Der Pfad der Agentausgabedatei. Wenn kein Dateiname angegeben ist, wird die Ausgabe an die Konsole gesendet. Wenn eine Datei mit dem angegebenen Namen vorhanden ist, wird die Ausgabe an diese Datei angefügt.

-OutputVerboseLevel [ 0| 1| 2 | 3 | 4 ]
Gibt an, ob die Ausgabe ausführlich sein soll.

Wert Beschreibung
0 Nur Fehlermeldungen werden gedruckt.
1 Alle Agent-Statusberichtsmeldungen werden gedruckt.
2 (Standardwert) Alle Fehlermeldungen und Agent-Statusberichtsmeldungen werden gedruckt.
3 Die ersten 100 Bytes jedes replizierten Befehls werden gedruckt.
4 Alle replizierten Befehle werden gedruckt.

Die Werte 2-4 sind beim Debuggen hilfreich.

-PacketSizepacket_size
Die Paketgröße in Bytes. Der Standardwert ist 4096 (Bytes).

-PollingIntervalpolling_interval
Gibt an, wie häufig replizierte Transaktionen aus dem Protokoll abgefragt werden (in Sekunden). Der Standardwert lautet 5 Sekunden.

-ProfileNameprofile_name
Gibt ein Agentprofil an, das für Agentparameter verwendet werden soll. Wenn ProfileName den Wert NULL aufweist, wird das Agentprofil deaktiviert. Wenn ProfileName nicht angegeben ist, wird das Standardprofil für den Agenttyp verwendet. Weitere Informationen finden Sie unter Replication Agent Profiles.

-PublisherFailoverPartnerserver_name[\instance_name]
Gibt die Failoverpartnerinstanz von SQL Server an, die an einer Datenbank Spiegel Sitzung mit der Publikationsdatenbank teilnimmt. Weitere Informationen finden Sie unter Datenbankspiegelung und Replikation (SQL Server).

-PublisherSecurityMode [ 0| 1]
Gibt den Sicherheitsmodus des Verlegers an. Ein Wert von 0 gibt die SQL Server-Authentifizierung (Standard) und einen Wert von 1 an, der den Windows-Authentifizierungsmodus angibt.

-PublisherLoginpublisher_login
Der Anmeldename des Verlegers.

-PublisherPasswordHerausgeberkennwort
Das Kennwort des Verlegers.

-QueryTimeOutquery_time_out_seconds
Ist die Anzahl der Sekunden, bevor die Abfrage ein Zeitüberschreitungsüberschreitung hat. Der Standardwert ist 1800 Sekunden.

-ReadBatchSizenumber_of_transactions
Die maximale Anzahl von Transaktionen, die pro Verarbeitungszyklus aus dem Transaktionsprotokoll der Veröffentlichungsdatenbank ausgelesen werden. Der Standardwert lautet 500, der Maximalwert 10.000. Der Agent setzt das Lesen von Transaktionen in Batches fort, bis alle Transaktionen aus dem Protokoll gelesen wurden. Der Parameter wird von Oracle-Verlegern nicht unterstützt.

-ReadBatchThresholdnumber_of_commands
Die Anzahl von Replikationsbefehlen, die aus dem Transaktionsprotokoll gelesen werden sollen, bevor sie vom Verteilungs-Agent an den Abonnenten ausgegeben werden. Der Standardwert ist 0. Wenn dieser Parameter nicht angegeben wird, liest der Protokolllese-Agent bis zum Ende des Protokolls oder bis zu der Nummer, die in -ReadBatchSize (Anzahl von Transaktionen) angegeben wurde.

-RecoverFromDataErrors
Gibt an, dass der Protokolllese-Agent weiter ausgeführt wird, wenn in Spaltendaten, die von einem Nicht-SQL Server-Verleger veröffentlicht wurden, Fehler auftreten. Standardmäßig bewirken solche Fehler, dass der Protokolllese-Agent fehlschlägt. Bei Verwendung von -RecoverFromDataErrorswerden fehlerhafte Spaltendaten entweder als NULL oder als geeigneter Nicht-NULL-Wert repliziert, und in der MSlogreader_history -Tabelle werden Warnmeldungen protokolliert. Der Parameter wird nur von Oracle-Verlegern unterstützt.

Hinweise

Wichtig

Wenn Sie SQL Server-Agent installiert haben, um unter einem lokalen Systemkonto statt unter einem do Standard Benutzerkonto (Standard) ausgeführt zu werden, kann der Dienst nur auf den lokalen Computer zugreifen. Wenn der Log Reader-Agent, der unter SQL Server-Agent ausgeführt wird, für die Verwendung des Windows-Authentifizierungsmodus konfiguriert ist, wenn er sich bei SQL Server anmeldet, schlägt der Protokolllese-Agent fehl. Die Standardeinstellung ist die SQL Server-Authentifizierung. Weitere Informationen zum Ändern von Sicherheitskonten finden Sie unter View and Modify Replication Security Settings.

Führen Sie zum Starten des Protokolllese-Agents von der Eingabeaufforderung logread.exe aus. Informationen hierzu finden Sie unter Ausführbare Konzepte für die Programmierung von Replikations-Agents.

Änderungsverlauf

Aktualisierter Inhalt
Der -ExtendedEventConfigFile -Parameter wurde hinzugefügt.
Der Parameter -MultiSubnetFailover wurde hinzugefügt.

Weitere Informationen

Verwaltung des Replikations-Agents