Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Clientadministration » SQL Anywhere-Clients für MobiLink » MobiLink SQL Anywhere Client-Dienstprogramm (dbmlsync)

 

Option -tu

Legt fest, dass jede Transaktion in der entfernten Datenbank als eigene Transaktion in einer eigenen Synchronisation ausgelesen werden soll.

Syntax
dbmlsync -tu ...
Bemerkungen

Wenn Sie -tu verwenden, erstellen Sie einen transaktionalen Upload: dbmlsync liest jede Transaktion in die entfernte Datenbank als einzelne Transaktion aus. Im MobiLink-Server werden alle Transaktionen beim Empfang einzeln angewendet und festgeschrieben.

Bei der Verwendung von -tu wird die Reihenfolge der Transaktionen in der entfernten Datenbank in der konsolidierten Datenbank immer beibehalten. Die Reihenfolge der Vorgänge in einer Transaktion wird jedoch aus folgenden zwei Gründen möglicherweise nicht bewahrt:

  • MobiLink übernimmt immer Aktualisierungen basierend auf den Fremdschlüsselbeziehungen. Wenn z.B. Daten in untergeordneten und übergeordneten Tabellen geändert werden, fügt MobiLink die Daten zuerst in die übergeordnete und danach in die untergeordnete Tabelle ein. Beim Löschen von Daten werden zuerst die Daten aus der untergeordneten Tabelle und dann erst in der übergeordneten Tabelle gelöscht. Falls Ihre entfernten Vorgänge diese Reihenfolge nicht befolgen, ist die Reihenfolge der Vorgänge in der konsolidierten Datenbank unterschiedlich.

  • Vorgänge innerhalb einer Transaktion werden gemischt zusammengefügt. Wenn Sie daher eine Zeile in einer Transaktion drei Mal ändern, wird nur der letzte Zustand der Zeile ausgelesen.

Wenn ein transaktionaler Upload unterbrochen wird, werden die Daten, die nicht gesendet wurden, mit der nächsten Synchronisation gesendet. In den meisten Fällen werden zu diesem Zeitpunkt nur die Transaktionen gesendet, die nicht erfolgreich abgeschlossen wurden. In einigen Fällen, beispielsweise wenn der Upload während der ersten Synchronisation einer Subskription fehlschlägt, sendet dbmlsync alle Transaktionen erneut.

Wenn Sie -tu nicht verwenden, fügt MobiLink alle Änderungen in der entfernten Datenbank im Upload in eine Transaktion zusammen. Wenn Sie also eine Zeile zwischen Synchronisationen drei Mal ändern, wird ungeachtet der Anzahl von entfernten Transaktionen nur der letzte Zustand der Zeile ausgelesen. Dieses Standardverhalten ist effizient und in vielen Fällen optimal.

In bestimmten Situationen möchten Sie aber vielleicht entfernte Transaktionen in der konsolidierten Datenbank beibehalten. Sie möchten z.B. Trigger für die konsolidierte Datenbank definieren, die Transaktionen bearbeiten, wenn sie in der entfernten Datenbank ausgeführt werden.

Außerdem bietet die Aufteilung des Uploads in kleinere Transaktionen gewisse Vorteile. Viele konsolidierte Datenbanken werden für kleine Transaktionen optimiert, sodass das Senden großer Transaktionen nicht effizient ist oder zu zahlreichen Konflikten führen kann. Wenn Sie -tu verwenden, können Sie nicht den gesamten Upload verlieren, wenn während des Uploads Kommunikationsfehler auftreten. Wenn Sie -tu verwenden und ein Upload-Fehler auftritt, werden alle erfolgreich übertragenen Transaktionen übernommen.

Die Option -tu bewirkt, dass MobiLink sich ähnlich wie SQL Remote verhält. Im Unterschied zu MobiLink repliziert jedoch SQL Remote alle Änderungen auf die entfernte Datenbank in der Reihenfolge ihres Auftretens ohne Zusammenfügung. Um dieses Verhalten zu imitieren, müssen Sie nach jedem Datenbankvorgang in der entfernten Datenbank eine Festschreibeanweisung ausführen.

Es ist nicht möglich, -tu zusammen mit der erweiterten Option Increment oder mit skriptgesteuerten Uploads zu verwenden.

Siehe auch