Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die Schritte zur Problembehandlung beschrieben, die beim Beheben von Problemen helfen können, die auftreten, nachdem der Replikationsprotokolllese-Agent in SQL Server fehlschlägt.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2892635
Problembeschreibung
Wenn der Replikationsprotokolllese-Agent in Microsoft SQL Server fehlschlägt, erhalten Sie eine Fehlermeldung, die dem folgenden im SQL Server-Protokoll ähnelt:
<Zeitstempel> spid98 Replication-Replication Transaction-Log Reader Subsystem: Agent logreadername failed. Der Vorgang konnte "sp_replcmds" unter "<Servername>" nicht ausführen. <Zeitstempel> spid258 Fehler: 14151, Schweregrad: 18, Status: 1. <Zeitstempel> spid258 Replication-Replication Transaction-Log Reader Subsystem: Agent logreadername failed. Der Vorgang konnte "sp_replcmds" unter "<Servername>" nicht ausführen.
Darüber hinaus erhalten Sie möglicherweise eine oder mehrere Fehlermeldungen, die wie folgt aussehen:
-
18805/18836 LogReader Fehler beim Erstellen replizierter Befehlszeitstempelstatus<>: 0, Code: 20011, Text: 'Der Prozess konnte 'sp_replcmds' für '<Servername>' nicht ausführen.' <Zeitstempel> Der Prozess konnte 'sp_replcmds' unter '<Servername>' nicht ausführen. <Zeitstempelstatus> : 0, Code: 18836, Text: 'Ungültiger Textinformationsblock für UpdateText: m_pHead-GetType>() : 1, m_TextDataType : 0, m_TextOpType : 3, ti:{RowsetId 7746362867712, {TextTimeStamp 480235880448, {RowId {PageId 2680944, FileId 1}, SlotId 21 }} , coloffset -1, textInfoFlags 0x4, textSize 177, offset 177, oldSize 0, newSize 0}.'. <Zeitstempelstatus> : 0, Code: 18805, Text: 'Logreader konnte nicht replizierten Befehl aus LSN {00150725:00014316:009d} erstellen.'. <Zeitstempelstatus> : 0, Code: 22037, Text: 'Der Prozess konnte 'sp_replcmds' auf '<Servername>' nicht ausführen.'
-
18805/18836 LogReader Fehler beim Erstellen replizierter Befehlszeitstempelstatus<>: 0, Code: 20011, Text: 'Der Prozess konnte 'sp_replcmds' für '<Servername>' nicht ausführen.' <Zeitstempel> Der Prozess konnte 'sp_replcmds' unter '<Servername>' nicht ausführen. <Zeitstempel-Agentstatus> : 6 <Zeitstempelstatus> : 0, Code: 18805, Text: 'Der Protokollleser-Agent konnte keinen replizierten Befehl aus der Protokollsequenznummer (LSN) {00033a89:0000969c:000a} erstellen. Sichern Sie die Publikationsdatenbank, und wenden Sie sich an die Kundendienstdienste.'. <Zeitstempelstatus> : 0, Code: 22037, Text: 'Der Prozess konnte 'sp_replcmds' auf '<Servername>' nicht ausführen.'
-
LogReader-Timeout Der Agent wird ausgeführt. Verwenden Sie den Replikationsmonitor, um die Details dieser Agentsitzung anzuzeigen. Repl Agent Status: 3 Publisher: {call sp_repldone ( 0x0000172a0002ac900001, 0x0000172a0002ac900001, 0, 0)} Publisher: {call sp_replcmds (500, 0)} Status: 2, code: 0, text: 'The process could not execute 'sp_replcmds' on '<Publisher name>'.' Der Vorgang konnte "sp_replcmds" unter "<Herausgebername>" nicht ausführen. Status des Repl-Agents: 5 Status: 2, Code: 0, Text: "Timeout abgelaufen". Verbindung mit Publisher '<Publisher-Name>' Trennen Der Agent ist mit dem Status "Wiederholen" fehlgeschlagen. Versuchen Sie, den Agent zu einem späteren Zeitpunkt auszuführen.
-
Assertion <Time stamp> Status: 0, code: 20011, text: 'The process could not execute 'sp_replcmds' on '<Server name>'.' <Zeitstempel> Der Prozess konnte 'sp_replcmds' unter '<Servername>' nicht ausführen. <Zeitstempelstatus> : 0, Code: 18773, Text: 'Textinformationsdatensätze für die Spalte "ClientPreferences", ID 30 während der Befehlserstellung konnten nicht gefunden werden.'. <Zeitstempelstatus> : 0, Code: 3624, Text: "Fehler bei einer System assertionsprüfung. Ausführliche Informationen finden Sie im SQL Server-Fehlerprotokoll. Normalerweise wird ein Assertionsfehler durch einen Softwarefehler oder beschädigte Daten verursacht. Führen Sie zum Überprüfen auf eine Beschädigung der Datenbank DBCC CHECKDB aus. Wenn Sie während des Setup zugestimmt haben, dass Abbilder an Microsoft gesendet werden sollen, wird ein Miniabbild an Microsoft gesendet. Möglicherweise ist ein Update von Microsoft im aktuellen Service Pack oder in einem QFE vom technischen Support verfügbar. '. <Zeitstempelstatus> : 0, Code: 22037, Text: 'Der Prozess konnte 'sp_replcmds' auf '<Servername>' nicht ausführen.'
Problembehandlung
Fehlermeldung 1: "18805/18836 LogReader Fehler beim Erstellen des replizierten Befehls"
In dieser Meldung können Sie das Objekt und die Änderung bestimmen, die die Transaktion im Protokoll erstellt hat. Verwenden Sie dazu die folgenden Informationen:
Code 18836 gibt Ihnen die ID der Seite, auf der Sie das Objekt finden können.
Notiz
Sie können die Verwendung der DBCC-SEITE verwenden, um den Inhalt von Datenbankseiten anzuzeigen.
Mit Code 18805 erhalten Sie eine Protokollsequenznummer (Log Sequence Number, LSN), die das Objekt bereitstellen kann:
dbcc Log(master, 3, 'lsn', '0x00000208:000000a0:0004', 'numrecs', 1)
Fehlermeldung 2: "18805/18836 LogReader Fehler beim Erstellen des replizierten Befehls"
Der Hauptunterschied zwischen Fehlermeldung 1 und Fehlermeldung 2 besteht darin, dass Fehler 2 nicht die Statusmeldung enthält und nicht auf die Spalte "textinfo" verweist. Dieses bekannte Problem wurde im kumulativen Updatepaket 11 für Microsoft SQL Server 2008 Service Pack 3 (SP3) behoben.
Das Problem tritt nur bei Tabellen auf, die Spalten für binäre große Objekte (BLOB) aufweisen und für die der Artikel nicht die parametrisierten Befehle verwendet, um sie zu replizieren. Gehen Sie folgendermaßen vor, um das Problem zu beheben:
Bestimmen Sie, ob der Artikel parametrisierte Befehle verwendet. Führen Sie dazu die folgende Abfrage aus:
SELECT STATUS, NAME FROM sysarticles WHERE NAME =''Konvertieren Sie die Statuswerte in binärformat. Zum Beispiel beträgt bei einem Statuswert von 41 der Binärwert 101001, und das fünfte Bit von rechts, auch bekannt als Statusbit, ist aktiv. Wenn das Statusbit 1 ist, ist es bereits festgelegt. Wenn das Statusbit 0 ist, wird es nicht festgelegt. Daher müssen Sie ausführen
sp_changearticle, um die parametrisierten Befehle zu konfigurieren. Führen Sie den folgenden Befehl aus, um das Statusbit zu ändern:sp_changearticle 'ConstituentRequest_ETL_Trans', 'CRProfile', 'status', 'parameters'
Fehlermeldung 3: LogReader Timeout
Sie können dieses Problem mit einer der folgenden Methoden beheben:
Erhöhen Sie den Wert für den QueryTimeout-Parameter des Log Reader-Agents.
Notiz
Der Wert für diesen Parameter beträgt standardmäßig 1.800 Sekunden (30 Minuten).
Legen Sie den Wert für den QueryTimeout-Parameter auf Null (0) fest, um timeout zu deaktivieren.
Reduzieren Sie den Wert für den ReadBatchSize-Parameter des Log Reader-Agents.
Wenn die Assertion im Fehlerprotokoll mit den Problemen in diesen Knowledge Base-Artikeln übereinstimmt, installieren Sie die entsprechende Lösung.