Update: Der Synchronisierungsvorgang einer Mergereplikation sertäglich in Microsoft SQL Server 2005

Gilt für: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

Fehler Nr.: 50002786 (SQL Hotfix)
Microsoft verteilt Microsoft SQL Server 2005-Fixes als eine herunterladbare Datei. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitskorrekturen, die in der vorherigen SQL Server 2005-Fixversion enthalten waren.

Problembeschreibung


Betrachten Sie das folgende Szenario. In Microsoft SQL Server 2005 konfigurieren Sie eine Mergereplikation. Anschließend stellen Sie den Snapshot für einen Abonnenten bereit. Wenn Sie in diesem Szenario den Merge-Agent zum Synchronisieren von Daten ausführen, ist beim Aufrufen der sp_MSmakegeneration gespeicherten Prozedur ein Zeitüberschreitungsvorgang beim Ausführen des Vorgangs. Wenn Sie die folgende Anweisung für die replizierte Datenbank des Abonnenten ausführen, nachdem der Vorgang ein Zeitproblem aufgetreten ist, gibt die Abfrage außerdem einige Datensätze zurück, die für das Problem anfällig sind:
select * from dbo.MSmerge_genhistory gh where not exists       (select * from dbo.MSmerge_contents as mc       where mc.generation = gh.generation)and not exists      (select * from dbo.MSmerge_tombstone as ts       where ts.generation = gh.generation)and genstatus = 0union select * from dbo.MSmerge_genhistory gh where exists       (select * from dbo.MSmerge_contents as mc      where mc.generation = gh.generation      and mc.tablenick <> gh.art_nick)or exists      (select * from dbo.MSmerge_tombstone as ts      where ts.generation = gh.generation      and ts.tablenick <> gh.art_nick)and genstatus = 0

Ursache


Dieses Problem tritt auf, weil sich eine Zeile in der Tabelle MSmerge_genhistory befindet, die eine der folgenden Bedingungen erfüllt:
  • Die Generierung weist keine Änderungen auf, die ihr in der MSmerge_tombstone oder in der MSmerge_contents Tabelle zugeordnet sind.
  • Mindestens eine Zeile, die der Generierung zugeordnet ist, haben einen falschen Wert in der Tabelle tablenick in der MSmerge_tombstone-Tabelle oder in der tabelle MSmerge_contents.
Diese Situation bewirkt, dass die sp_MSmakegeneration gespeicherte Prozedur in eine Endlosschleife wechselt.

Fehlerbehebung


Die Korrektur für dieses Problem wurde zuerst in Kumulatives Update 8 veröffentlicht. Weitere Informationen zum Abrufen dieses kumulativen Updatepakets für SQL Server 2005 Service Pack 2 erhalten Sie unter der folgenden Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
951217 Kumulatives Updatepaket 8 für SQL Server 2005 Service Pack 2
Hinweis Da die Builds kumulativ sind, enthält jede neue Fixversion alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen SQL Server 2005-Fixversion enthalten waren. Microsoft empfiehlt, die neueste Fixversion anzuwenden, die diesen Hotfix enthält. Weitere Informationen erhalten Sie, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
937137 Die SQL Server 2005-Builds, die nach der Veröffentlichung von SQL Server 2005 Service Pack 2 veröffentlicht wurden
Microsoft SQL Server 2005-Hotfixes werden für bestimmte SQL Server-Service Packs erstellt. Sie müssen einen SQL Server 2005 Service Pack 2-Hotfix auf eine Installation von SQL Server 2005 Service Pack 2 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server-Service Pack bereitgestellt wird, im nächsten SQL Server-Service Pack enthalten.

Problemumgehung


Führen Sie die folgenden Schritte aus, um dieses Problem zu umgehen:
  1. Brechen Sie den Synchronisierungsvorgang ab, der nicht abgeschlossen ist.
  2. Führen Sie die folgenden Anweisungen aus, um die generation_leveling_threshold Einstellung für die Publikation abzuerhalten:
    use <Publication Database Name>goexec sp_helpmergepublication @publication = '<Publication Name>'
    Notieren Sie sich den Wert der generation_leveling_threshold Einstellung.
  3. Führen Sie die folgenden Anweisungen aus, um die Generierungsabgleich und Die-Generierungskoaleszung zu deaktivieren:
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>', @property = 'generation_leveling_threshold', @value = 0
  4. Synchronisieren Sie Daten für die Publikation.
  5. Nachdem die Synchronisierung erfolgreich abgeschlossen wurde, setzen Sie die einstellung generation_leveling_threshold auf den Wert zurück, den Sie in Schritt 2 angegeben haben. Führen Sie dazu die folgenden Anweisungen aus:
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>', @property = 'generation_leveling_threshold', @value = <Value>
Nachdem Sie diese Methode verwendet haben, um dieses Problem zu umgehen, tritt dieses Problem erneut auf, wenn ein anderer Abonnent versucht, die Generierung zu verarbeiten. Sie müssen diese Schritte für alle Abonnenten wiederholen, die auf das Problem stoßen.

Status


Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen


Weitere Informationen dazu, welche Dateien geändert werden, und Informationen zu allen Voraussetzungen zum Anwenden des kumulativen Updatepakets, das den in diesem Microsoft Knowledge Base-Artikel beschriebenen Hotfix enthält, finden Sie unter der folgenden Artikelnummer, um die Artikel in der Microsoft Knowledge Base:
951217 Kumulatives Updatepaket 8 für SQL Server 2005 Service Pack 2

Informationsquellen


Weitere Informationen zur Liste der Builds, die nach SQL Server Service Pack 2 verfügbar sind, finden Sie unter der folgenden Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
937137 Die SQL Server 2005-Builds, die nach der Veröffentlichung von SQL Server 2005 Service Pack 2 veröffentlicht wurden
Weitere Informationen zum inkrementellen Wartungsmodell für SQL Server erhalten Sie, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
935897 Ein inkrementelles Wartungsmodell ist vom SQL Server-Team verfügbar, um Hotfixes für gemeldete Probleme zu liefern
Weitere Informationen zum Abrufen von SQL Server 2005 Service Pack 2 erhalten Sie unter der folgenden Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
913089 So erhalten Sie das neueste Service Pack für SQL Server 2005
Weitere Informationen zu den neuen Funktionen und den Verbesserungen in SQL Server 2005 Service Pack 2 finden Sie auf der folgenden Microsoft-Website:Weitere Informationen zum Benennungsschema für SQL Server-Updates erhalten Sie, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
822499 Neues Benennungsschema für Microsoft SQL Server-Softwareupdatepakete
Weitere Informationen zur Terminologie von Softwareupdates erhalten Sie, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
824684 Beschreibung der Standardterminologie, die zum Beschreiben von Microsoft-Softwareupdates verwendet wird