Freigeben über


Replikationsprotokolllese-Agent

Gilt für: SQL Server Azure 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 optionale Parameter nicht angegeben werden, werden vordefinierte Werte basierend auf dem Standard-Agent-Profil 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.

-Publisher server_name [ \instance_name ]

Der Name des Herausgebers. Geben Sie für die Standardinstanz von SQL Server auf diesem Server an <server_name> . Geben Sie <server_name>\<instance_name> für eine benannte Instanz von SQL Server auf diesem Server an.

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

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

-Distributor server_name [ \instance_name ]

Der Name des Distributors. Geben Sie für die Standardinstanz von SQL Server auf diesem Server an <server_name> . Geben Sie <server_name>\<instance_name> für eine benannte Instanz von SQL Server auf diesem Server an.

-DistributorLogin distributor_login

Anmeldename des Verteilers.

-DistributorPassword distributor_password

Das Händlerkennwort.

-DistributorSecurityMode [ 0 | 1 ]

Gibt den Sicherheitsmodus des Verteilers an. Ein Wert des 0 SQL Server-Authentifizierungsmodus (Standard) und ein Wert von 1 "Windows-Authentifizierungsmodus".

-EncryptionLevel [ 0 | 1 | 2 ]

Die Ebene der Transport Layer Security (TLS), die zuvor als SSL (Secure Sockets Layer) bezeichnet wird, Verschlüsselung, die vom Log Reader-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, aber der Agent überprüft nicht, ob das TLS-Serverzertifikat von einem vertrauenswürdigen Aussteller signiert ist.
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 beim Festlegen -EncryptionLevel 2eine erfolgreiche Verbindung herstellen kann, erstellen Sie einen Alias auf dem lokalen SQL Server. 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 View and Modify Replication Security Settings.

-ExtendedEventConfigFile configuration_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 Leistungswirkung der Verlaufsprotokollierung minimieren, indem Sie die Option auswählen 1.

Wert von HistoryVerboseLevel Beschreibung
0 Keine.
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.

-KeepAliveMessageInterval keep_alive_message_interval_seconds

Die Anzahl der Sekunden, bevor der Verlaufsthread überprüft, ob eine der vorhandenen Verbindungen auf eine Antwort vom Server wartet. 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.

-LoginTimeOut-login_time_out_seconds

Die Anzahl der Sekunden, bevor die Anmeldezeitüberschreitung erfolgt. Der Standardwert ist 15 Sekunden.

-LogScanThreshold scan_threshold

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

-MaxCmdsInTran number_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 dem Ende der ursprünglichen Transaktion auf Zeilen einer großen logischen Publisher-Transaktion zugreifen, was die strikte transaktionsale Atomität aufbricht. Der Standardwert ist 0, wodurch die Transaktionsgrenzen von Publisher beibehalten werden.

Dieser Parameter wird für Nicht-SQL Server-Publikationen ignoriert. Weitere Informationen finden Sie unter Konfigurieren des Transaktionssatzauftrags.

MaxCmdsInTran wurde nicht so konzipiert, dass sie immer aktiviert ist. Es funktioniert in Fällen, in denen jemand versehentlich eine große Anzahl von DML-Vorgängen in einer einzelnen Transaktion ausgeführt hat. Dies führt zu einer Verzögerung bei der Verteilung von Befehlen, bis sich die gesamte Transaktion in der Verteilungsdatenbank befindet, Sperren gehalten werden usw. Wenn Sie routinemäßig in diese Situation fallen, überprüfen Sie Ihre Anwendungen, und finden Sie Möglichkeiten, die Transaktionsgröße zu reduzieren.

Warnung

Primärschlüsselfehler können auftreten, wenn der MaxCmdsInTran Parameter beim Replizieren einer großen Transaktion hinzugefügt und entfernt wird. Um Primärschlüsselfehler für große Transaktionen zu beheben, fügen Sie den MaxCmdsInTran Parameter zurück, bis die Transaktion in die Verteilungsdatenbank repliziert wird.

Die Verwendung des MaxCmdsInTran Parameters in einer Datenbank, die sowohl die Änderungsdatenerfassung (Change Data Capture, CDC) als auch die Replikation aktiviert hat, wird nicht unterstützt und kann zu Datenverlusten in den CDC-Änderungstabellen führen.

-MessageInterval message_interval

Das Zeitintervall, das für die Verlaufsprotokollierung verwendet wird. Ein Verlaufsereignis wird protokolliert, wenn der MessageInterval Wert erreicht wird, nachdem das letzte Verlaufsereignis protokolliert wurde.

Wenn keine replizierte Transaktion an der Quelle verfügbar ist, meldet der Agent eine Meldung ohne Transaktion an den Distributor. 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 ]

Gilt für: SQL Server 2019 (15.x) und höhere Versionen.

Gibt an, ob die MultiSubnetFailover-Eigenschaft aktiviert ist oder nicht. 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. In SQL Server 2022 (16.x) CU 10 und höheren Versionen gibt es eine Änderung in der Konfiguration des dynamischen verknüpften Servers. Weitere Informationen finden Sie unter KB5031778.

-Ausgabe output_path_and_file_name

Der Pfad der Agent-Ausgabedatei. Wenn der Dateiname nicht angegeben wird, 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 (Standard) 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.

-PacketSize-packet_size

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

-PollingInterval polling_interval

Wie oft in Sekunden das Protokoll für replizierte Transaktionen abgefragt wird. Der Standardwert lautet 5 Sekunden.

-ProfileName profile_name

Gibt ein Agentprofil an, das für Agentparameter verwendet werden soll. Ist ProfileName dies der Grund, ist NULLdas Agentprofil deaktiviert. Wenn ProfileName nicht angegeben, wird das Standardprofil für den Agenttyp verwendet. Weitere Informationen finden Sie unter Replication Agent Profiles.

-PublisherFailoverPartner server_name [ \instance_name ]

Gibt die Failoverpartnerinstanz von SQL Server an, die an einer Datenbankspiegelungssitzung 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 der 0 SQL Server-Authentifizierung (Standard) und ein Wert von 1 "Windows-Authentifizierungsmodus".

-PublisherLogin publisher_login

Anmeldename des Verlegers.

-PublisherPassword-publisher_password

Kennwort des Verlegers.

-QueryTimeOut-query_time_out_seconds

Die Anzahl der Sekunden, bevor die Abfrage eine Zeitüberschreitung hat. Der Standardwert ist 1.800 Sekunden.

-ReadBatchSize number_of_transactions

Die maximale Anzahl von Transaktionen, die aus dem Transaktionsprotokoll der Veröffentlichungsdatenbank pro Verarbeitungszyklus gelesen werden, mit einem Standardwert von 500 und max. 10000. Der Agent liest weiterhin Transaktionen in Batches, bis alle Transaktionen aus dem Protokoll gelesen werden. Dieser Parameter wird für Oracle-Herausgeber nicht unterstützt.

-ReadBatchThreshold number_of_commands

Die Anzahl der Replikationsbefehle, 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 ist, liest der Protokollleser-Agent das Ende des Protokolls oder die angegebene -ReadBatchSize Zahl (Anzahl der Transaktionen).

-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 -RecoverFromDataErrorswerden fehlerhafte Spaltendaten entweder als NULL oder als geeigneter Wert ungleich Null repliziert, und Warnmeldungen werden in der MSlogreader_history Tabelle protokolliert. Der Parameter wird nur von Oracle-Verlegern unterstützt.

Hinweise

Wenn Sie SQL Server-Agent installiert haben, um unter einem lokalen Systemkonto anstelle eines Domänenbenutzerkontos (Standardeinstellung) 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 an der Eingabeaufforderung aus, logread.exe um den Protokollleser-Agent zu starten. Informationen hierzu finden Sie unter Ausführbare Konzepte für die Programmierung von Replikations-Agents.