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
2
eine 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 |
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 NULL
das 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 -RecoverFromDataErrors
werden 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.