Das System der garantierten Nachrichtenzustellung stellt Folgendes sicher:
Alle replizierten Vorgänge werden in der korrekten Reihenfolge übernommen.
Keine replizierten Vorgänge werden übersehen.
Kein replizierter Vorgang wird zweimal angewendet.
Das System der garantierten Nachrichtenzustellung verwendet die folgenden Informationen:
Die Statusinformationen, die in der SYSREMOTEUSER-Systemtabelle verwaltet werden Diese Tabelle enthält eine Zeile für jeden Subskribenten mit Statusinformationen über Nachrichten, die an diesen Subskribenten versendet und von ihm empfangen werden. Zum Beispiel:
In der konsolidierten Datenbank enthält die SYSREMOTEUSER-Systemtabelle eine Zeile für jeden entfernten Benutzer.
In den jeweiligen entfernten Datenbanken enthält die SYSREMOTEUSER-Systemtabelle eine einzelne Zeile mit Informationen über die konsolidierte Datenbank.
Die SYSREMOTEUSER-Systemtabelle wird durch den SQL Remote-Nachrichtenagenten (dbremote) verwaltet.
In der Subskribenten-Datenbank sendet der SQL Remote-Nachrichtenagent (dbremote) eine Bestätigung an die Publikationseigentümer-Datenbank, um sicherzustellen, dass die SYSREMOTEUSER-Systemtabelle an jedem Ende der Subskription korrekt verwaltet ist.
Die Informationen im Header der Nachrichten Der SQL Remote-Nachrichtenagent (dbremote) liest die Header-Daten in den Nachrichten und verwendet diese Informationen, um die SYSREMOTEUSER-Systemtabelle zu aktualisieren. Eine Nachricht enthält die folgenden Daten in ihrem Header:
Den resend_count-Wert Ein Zähler, der die Häufigkeit protokolliert, mit der die Empfängerdatenbank Nachrichten verloren hat.
Im folgenden Beispiel ist der resend_count-Wert 1.
Current message's header: (1-0000942712-0001119170-0) |
Das Transaktionslog-Offset der letzten COMMIT-Anweisung in der vorherigen Nachricht. Im folgenden Beispiel ist das Transaktionslog-Offset der letzten Festschreibung in der vorherigen Nachricht 0000942712.
Previous message's header:(0-0000923357-0000942712-0) Current message's header: (0-0000942712-0001119170-0) |
Transaktionslog-Offset der letzten COMMIT-Anweisung in der aktuellen Nachricht Im folgenden Beispiel ist die letzte Festschreibung in der aktuellen Nachricht 0001119170:
Current message's header: (0-0000942712-0001119170-0) |
Wenn eine Transaktion mehrere Nachrichten umfasst, können beide Transaktionslog-Offsets identisch sein, bis die letzte Nachricht ein COMMIT enthält.
Im folgenden Beispiel tritt das COMMIT erst bei der vierten Nachricht auf:
(0-0000942712-0000942712-0) (0-0000942712-0000942712-1) (0-0000942712-0000942712-2) (0-0000942712-0001119170-3) |
Eine Sequenznummer Wenn eine Transaktion mehrere Nachrichten umfasst, wird diese Sequenznummer verwendet, um die Nachrichten korrekt zu sortieren.
Eine Sequenznummer von null kann folgendes angeben:
Die Nachricht ist nicht Teil einer mehrteiligen Nachricht, wenn die Transaktionslog-Offsets verschieden sind.
Im folgenden Beispiel sind die Nachrichten nicht Teil einer mehrteiligen Nachricht:
(0-0000923200-0000923357-0) (0-0000923357-0000942712-0) |
Die Nachricht ist die erste einer mehrteiligen Nachricht, wenn die Transaktionslog-Offsets gleich sind.
Im folgenden Beispiel ist die erste Nachricht ein Teil einer mehrteiligen Nachricht:
(0-0000942712-0000942712-0) (0-0000942712-0000942712-1) (0-0000942712-0000942712-2) (0-0000942712-0001119170-3) |
Reihenfolge der Vorgänge
Verlorene oder beschädigte Nachrichten
Nachrichten werden nur einmal übernommen
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |