Freigeben über


MSSQL_REPL027183

Meldungsdetails

Produktname

SQL Server

Produktversion

10.0

Buildnummer des Produkts

 

Ereignis-ID

27183

Ereignisquelle

MSSQLSERVER

Komponente

SQL Server Database Engine (Datenbankmodul)

Symbolischer Name

Meldungstext

Vom Mergeprozess konnten Änderungen in Artikeln mit parametrisierten Zeilenfiltern nicht aufgezählt werden. Falls dieser Fehler weiterhin auftritt, erhöhen Sie das Timeout für Abfragen für diesen Prozess, reduzieren Sie die Beibehaltungsdauer für die Veröffentlichung, und verbessern Sie die Indizes für veröffentlichte Tabellen.

Erklärung

Dieser Fehler wird ausgelöst, wenn bei der Verarbeitung von Änderungen in einer gefilterten Veröffentlichung ein Merge-Agent-Timeout auftritt. Das Timeout kann durch eines der folgenden Probleme verursacht werden:

  • Die Optimierung für vorausberechnete Partitionen wird nicht verwendet.

  • In den beim Filtern verwendeten Spalten liegt eine Indexfragmentierung vor.

  • Es sind umfangreiche Tabellen mit Mergemetadaten vorhanden, beispielsweise MSmerge_tombstone, MSmerge_contents und MSmerge_genhistory.

  • Es sind gefilterte Tabellen, die nicht über einen eindeutigen Schlüssel verknüpft sind, und Joinsfilter mit einer großen Anzahl an Tabellen vorhanden.

Benutzeraktion

So lösen Sie das Problem:

  • Verringern Sie den Wert des QueryTimeOut-Parameters für den Merge-Agent, damit die Verarbeitung fortgesetzt werden kann und Sie sich der eigentlichen Ursache des Fehlers widmen können. Agent-Parameter können in Agent-Profilen und in der Befehlszeile angegeben werden. Weitere Informationen finden Sie hier:

  • Verwenden Sie, sofern möglich, die Optimierung für vorausberechnete Partitionen. Diese Optimierung wird standardmäßig verwendet, wenn mehrere Veröffentlichungsanforderungen erfüllt sind. Weitere Informationen zu diesen Anforderungen finden Sie unter Optimieren der Leistung parametrisierter Filter mithilfe vorausberechneter Partitionen. Wenn die Veröffentlichung diese Anforderungen nicht erfüllt, sollten Sie einen erneuten Entwurf der Veröffentlichung in Betracht ziehen.

  • Geben Sie die kürzestmögliche Einstellung für die Beibehaltungsdauer der Veröffentlichung an, da die Replikation keinen Cleanup der Metadaten in den Veröffentlichungs- und den Abonnementdatenbanken ausführen kann, bevor die Beibehaltungsdauer erreicht wurde. Weitere Informationen finden Sie unter Abonnementablauf und -deaktivierung.

  • Als Teil der Wartung für die Mergereplikation überprüfen Sie gelegentlich die Vergrößerung der Systemtabellen, die mit der Mergereplikation verbunden sind: MSmerge_contents, MSmerge_genhistory, MSmerge_tombstone, MSmerge_current_partition_mappings und MSmerge_past_partition_mappings. Führen Sie eine regelmäßige Neuindizierung dieser Tabellen durch. Weitere Informationen finden Sie unter Neuorganisieren und Neuerstellen von Indizes.

  • Stellen Sie sicher, dass die zum Filtern verwendeten Spalten richtig indiziert sind, und erstellen Sie die entsprechenden Indizes gegebenenfalls erneut. Weitere Informationen finden Sie unter Neuorganisieren und Neuerstellen von Indizes.

  • Legen Sie für Joinsfilter, die auf eindeutigen Spalten basieren, die join_unique_key-Eigenschaft fest. Weitere Informationen finden Sie unter Joinfilter.

  • Begrenzen Sie die Anzahl der Tabellen in der Joinsfilterhierarchie. Wenn Sie Joinsfilter für fünf oder mehr Tabellen erstellen, sollten Sie andere Lösungen in Betracht ziehen: Kleinere Tabellen, Tabellen, die nicht geändert werden, oder Tabellen, bei denen es sich primär um Nachschlagetabellen handelt, sollten in diesem Fall nicht gefiltert werden. Verwenden Sie Joinsfilter nur zwischen Tabellen, für die eine Partitionierung auf Abonnements erfolgen muss.

  • Nehmen Sie zwischen Synchronisierungen weniger Änderungen an gefilterten Tabellen vor, oder führen Sie den Merge-Agent häufiger aus. Weitere Informationen zum Angeben von Synchronisierungszeitplänen finden Sie unter Angeben von Synchronisierungszeitplänen.

Siehe auch

Konzepte

Fehler- und Ereignisreferenz (Replikation)