Das Skript wird zum Aufrufen eines benutzerdefinierten Algorithmus zum Generieren des next_last_download_timestamp-Werts verwendet.
In der folgenden Tabelle stellt die Beschreibung den SQL-Datentyp bereit. Wenn Sie Ihr Skript in Java oder .NET schreiben, müssen Sie den entsprechenden Datentyp benutzen. Siehe SQL-Java-Datentypen und SQL-.NET-Datentypen.
In SQL-Skripten können Sie Ereignisparameter mit ihrem Namen oder mit einem Fragezeichen angeben. Die Verwendung von Fragezeichen ist veraltet und es wird empfohlen, benannte Parameter zu verwenden. Sie können nicht Namen und Fragezeichen in einem Skript mischen. Wenn Sie Fragezeichen verwenden, müssen die Parameter in der nachfolgend gezeigten Reihenfolge stehen und sind nur dann optional, wenn keine nachfolgenden Parameter angegeben wurden (z.B. müssen Sie Parameter 1 verwenden, wenn Sie Parameter 2 verwenden möchten). Wenn Sie benannte Parameter verwenden, können Sie beliebige Teilmengen der Parameter in beliebiger Reihenfolge angeben.
Parametername für SQL-Skripten | Beschreibung | Reihenfolge (veraltet für SQL) |
---|---|---|
s.remote_id |
VARCHAR(128). Die entfernte ID von MobiLink. Sie können die entfernte ID nur dann referenzieren, wenn Sie benannte Parameter verwenden. |
Nicht anwendbar |
s.next _last_download |
TIMESTAMP. Dies ist ein INOUT-Parameter. Der MobiLink-Server initialisiert diesen Parameter mit dem last_download_timestamp-Wert, einem Zeitstempel, mit dessen Hilfe ein Download-Datenstrom in der aktuellen Synchronisation generiert wird. |
1 |
s.username |
VARCHAR(128). Der MobiLink-Benutzername |
2 |
Dieses Skript wird in der Transaktion prepare_for_download aufgerufen, unmittelbar bevor das Skript prepare_for_download aufgerufen wird.
Verwenden Sie dieses Ereignis mit Vorsicht, vor allem bei konsolidierten Datenbanken, die eine Snapshot-Isolationsstufe unterstützen, z.B. SQL Anywhere, Oracle, Microsoft SQL Server und IBM DB2 LUW 9.7. Der MobiLink-Server verwendet für den Download mit Oracle immer die Isolationsstufe snapshot. Standardmäßig wird die Isolationsstufe snapshot auch für den Download mit SQL Anywhere und Microsoft SQL Server verwendet, wenn sie in der Datenbank aktiviert ist.
Für eine zuverlässige zeitstempelbasierte Synchronisation muss die Ausgabe von next_last_download die frühere der folgenden Zeitangaben sein:
der aktuelle Zeitstempel
der Start-Zeitstempel der frühesten offenen Transaktion zum Aktualisieren (z.B. Einfügen, Aktualisieren oder Löschen) einer Tabelle oder Ansicht, die beim Erstellen des Downloads verwendet wird.
Dieses Skript kann auch mit der Klausel --{ml_ignore} als ignoriertes Skript angegeben werden. Wenn dieses Skript als ignoriertes Skript definiert ist, ruft der MobiLink-Server es nicht auf und generiert nicht mithilfe MobiLink-interner Logik den nächsten Zeitstempel für den letzten Download. Stattdessen sendet der MobiLink-Server den letzten Download-Zeitstempel an den Client zurück, der vom Client in der aktuellen Synchronisation gesendet wurde. Sie können diese Methode für Synchronisationen verwenden, die immer für alle Synchronisationstabellen alle Zeilen aus der konsolidierten Datenbank herunterladen. Für die zeitbasierte Synchronisation auf Zeitstempelbasis, sollten Sie dieses Skript als echtes Skript definieren und mit der entsprechenden Geschäftslogik den nächsten Zeitstempel für den letzten Download generieren. Eine andere Möglichkeit besteht darin, kein Skript für dieses Ereignis zu definieren. In diesem Fall generiert der MobiLink-Server mithilfe seiner internen Logik den nächsten Zeitstempel für den letzten Download.
Das Skript generate_next_last_download_timestamp kann im MobiLink-Server verwendet werden, um auf der UTC-Zeit basierende Downloads zu erstellen. Im Folgenden finden Sie die Schritte zur Einrichtung eines auf der UTC-Zeit basierenden Downloads für Oracle:
Angenommen, Sie haben eine Synchronisationstabelle mit dem Namen my_table, die wie folgt definiert ist:
CREATE TABLE my_table ( pk INT PRIMARY KEY NOT NULL, c1 VARCHAR(100) , last_modified TIMESTAMP DEFAULT SYS_EXTRACT_UTC( SYSTIMESTAMP ) ) |
Erstellen Sie eine gespeicherte Prozedur mit dem Namen GenerateNextDownloadTimestamp, um die Startzeit der frühesten offenen Transaktion in UTC-Zeit aus der Oracle Datenbank abzurufen:
CREATE PROCEDURE GenerateNextDownloadTimestamp ( p_ts IN OUT TIMESTAMP ) AS BEGIN SELECT SYS_EXTRACT_UTC( NVL( MIN( TO_TIMESTAMP( START_TIME, 'mm/dd/rr hh24:mi:ss' ) ), SYSTIMESTAMP ) ) INTO p_ts FROM GV$TRANSACTION; END; |
Rufen Sie das Skript ml_add_connect_script auf, um das Skript zu installieren:
call ml_add_connection_script( 'my_script_version', 'generate_next_last_download_timestamp', '{ call GenerateNextDownloadTimestamp( {ml s.next_last_download} ) }' ) |
Die Anmeldekennung für den MobiLink-Server muss über die SELECT-Berechtigung für GV$TRANSACTION verfügen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |