Benutzen Sie dieses Skript, wenn Sie die Uhrzeit des letzten Downloads für die aktuelle Synchronisation ändern wollen.
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 verwenden. 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 unten gezeigten Reihenfolge stehen und sind nur dann optional, wenn keine nachfolgenden Parameter angegeben wurden. (Sie müssen beispielsweise 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.last_download |
TIMESTAMP. Die Zeit des ältesten Downloads einer synchronisierten Tabelle. Dies ist ein INOUT-Parameter. |
1 |
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.username |
VARCHAR(128). Der MobiLink-Benutzername. |
2 |
s.script_version | VARCHAR(128). Optionaler IN-Parameter, mit dem angegeben wird, dass der MobiLink-Server die bei der aktuellen Synchronisation verwendete Skriptversionszeichenfolge an diesen Parameter übergibt. Fragezeichen können nicht verwendet werden, um diesen Parameter anzugeben. | Nicht anwendbar |
Keine.
Verwenden Sie dieses Skript, um den Zeitstempel last_download für die aktuelle Synchronisation zu ändern. Wenn dieses Skript definiert ist, verwendet der MobiLink-Server den geänderten last_download-Zeitstempel als den an die Download-Skripten übergebenen last_download-Zeitstempel. Dieses Skript wird gewöhnlich dazu verwendet, verlorene Daten in der entfernten Datenbank wiederherzustellen. Sie können den Zeitstempel last_download auf eine frühere Uhrzeit wie z.B. 1900-01-01 00:00 zurücksetzen, sodass bei der nächsten Synchronisation alle Daten heruntergeladen werden. Außerdem gilt: Wenn Aktualisierungen an konsolidierten Tabellen Zeitstempel zulassen, die vor der Uhrzeit der tatsächlichen Aktualisierung liegen, z.B. über DBMS-Replikation, können Sie mit diesem Skript den Zeitpunkt des letzten Downloads anpassen, um zu vermeiden, dass diese Aktualisierungen beim Download fehlen.
SQL-Skripten für das Ereignis modify_last_download_timestamp müssen als gespeicherte Prozeduren implementiert werden.
Dieses Skript wird direkt vor dem prepare_for_download-Skript in derselben Transaktion ausgeführt.
Die folgende SQL-Anweisung erstellt eine gespeicherte Prozedur. Die folgende Syntax gilt für konsolidierte Oracle-Datenbanken. Wenn Sie eine gespeicherte Prozedur in Oracle erstellen, die einen Parameter entgegennimmt und übergibt, müssen Sie sicherstellen, dass der Parameter als IN OUT markiert ist, wie unten gezeigt wird:
CREATE OR REPLACE PROCEDURE ModifyDownloadTimestamp ( download_timestamp IN OUT TIMESTAMP, user_name IN VARCHAR) AS BEGIN -- N is the maximum replication latency in consolidated cluster download_timestamp := download_timestamp - 1; END; |
Die folgende Syntax gilt für konsolidierte SQL Anywhere-, Adaptive Server Enterprise- und SQL Server-Datenbanken.
CREATE PROCEDURE ModifyDownloadTimestamp @download_timestamp DATETIME OUTPUT, @user_name VARCHAR( 128 ) AS BEGIN -- N is the maximum replication latency in consolidated cluster SELECT @download_timestamp = @download_timestamp - N END |
Der folgende Aufruf einer MobiLink-Systemprozedur weist die gespeicherte Prozedur ModifyDownloadTimestamp dem Ereignis modify_last_download_timestamp zu. Die folgende Syntax gilt für eine konsolidierte SQL Anywhere-Datenbank.
CALL ml_add_connection_script( 'my_version', 'modify_last_download_timestamp', '{CALL ModifyDownloadTimestamp( {ml s.last_download}, {ml s.username} ) }' ) |
Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine Java-Methode namens modifyLastDownloadTimestamp als das Skript für das Verbindungsereignis modify_last_download_timestamp, wenn die Skriptversion ver1 synchronisiert wird.
CALL ml_add_java_connection_script( 'ver1', 'modify_last_download_timestamp', 'ExamplePackage.ExampleClass.modifyLastDownloadTimestamp' ) |
Im Folgenden sehen Sie die Java-Beispielmethode modifyLastDownloadTimestamp. Sie gibt den aktuellen und den neuen Zeitstempel aus und ändert den Zeitstempel, der übergeben wird.
public void modifyLastDownloadTimestamp( Timestamp lastDownloadTime, String userName ) { java.lang.System.out.println( "old date: " + lastDownloadTime.toString() ); lastDownloadTime.setDate( lastDownloadTime.getDate() -1 ); java.lang.System.out.println( "new date: " + lastDownloadTime.toString() ); } |
Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine .NET-Methode namens ModifyLastDownloadTimestamp als das Skript für das Verbindungsereignis modify_last_download_timestamp, wenn die Skriptversion ver1 synchronisiert wird.
CALL ml_add_dnet_connection_script( 'ver1', 'modify_last_download_timestamp', 'TestScripts.Test.ModifyLastDownloadTimestamp' ) |
Im Folgenden sehen Sie die .NET-Beispielmethode ModifyLastDownloadTimestamp.
public void ModifyLastDownloadTimestamp( ref DateTime lastDownloadTime, string userName ) { System.Console.WriteLine( "old date: " + last_download_time.ToString() ); last_download_time = DateTime::Now; System.Console.WriteLine( "new date: " + last_download_time.ToString() ); } |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |