Bietet nützliche Informationen über die synchronisierten Publikationen. Dieses Skript kann auch bei der Verwaltung von Generierungsnummern für dateibasierte Downloads verwendet werden.
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.generation_number |
INTEGER. Dies ist ein INOUT-Parameter. Wenn Ihr Deployment keine dateibasierten Downloads verwendet, kann dieser Parameter ignoriert werden. Standardwert ist "1". |
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.publication_name |
VARCHAR(128). Der Name der Publikation |
3 |
s.last_publication_upload |
TIMESTAMP. Zeit des letzten Uploads dieser Publikation. |
4 |
s.last_publication_download |
TIMESTAMP. Zeit des letzten Downloads dieser Publikation. |
5 |
s.subscription_id |
VARCHAR(128). Die entfernte Subskriptions-ID. |
6 |
Die Standard-Generierungsnummer ist 1. Wenn für dieses Ereignis kein Skript definiert ist, ist die an die entfernte Datenbank gesendete Generierungsnummer immer 1.
Mit diesem Ereignis können Sie Synchronisationslogik basierend auf den gerade synchronisierten Publikationen entwerfen. Dieses Ereignis wird in derselben Transaktion wie das Ereignis begin_synchronization und nach dem Ereignis begin_synchronization aufgerufen. Es wird einmal pro synchronisierter Publikation aufgerufen.
Ein möglicher Einsatzbereich für dieses Ereignis besteht darin, den Umfang des Download auf der Basis der benutzten Publikation festzulegen. Als Beispiel können Sie eine Tabelle verwenden, die zu einer Prioritätspublikation (PriorityPub) und zu einer Publikation für alle Tabellen (AllTablesPub) gehört. Ein Skript für das Ereignis begin_publication könnte die Publikationsnamen in einer Java-Klasse oder einer SQL-Variablen bzw. einem Paket speichern. Download-Skripten könnten dann unterschiedlich vorgehen, je nachdem ob die zu synchronisierende Publikation PriorityPub oder AllTablesPub ist.
Wenn eine entfernte UltraLite mit UL_SYNC_ALL synchronisiert, wird dieses Ereignis einmal mit dem Pubilkationsnamen "unknown" aufgerufen.
Der Parameter generation_number ist speziell für dateibasierte Downloads vorgesehen. Der Ausgabewert für die Generierungsnummer wird vom begin_publication-Skript an das end_publication-Skript übergeben. Die Bedeutung von generation_number hängt davon ab, ob die aktuelle Synchronisation benutzt wird, um eine Download-Datei zu erstellen oder ob die aktuelle Synchronisation ein Upload benötigt.
Bei dateibasierten Downloads werden Generierungsnummern benutzt, um ein Upload vor dem Download zu erzwingen. Während die Generierungsnummern unverändert bleiben, können entfernte Datenbanken viele dateibasierte Downloads ohne Upload verarbeiten. Die Nummer wird in der Download-Datei gespeichert. Während einer Synchronisation, zu der ein Upload gehört, wird eine Generierungsnummer für jede Subskription bei einer Publikation ausgegeben. Die Nummern werden in der Uploadbestätigung an die entfernte Datenbank übergeben und in SYSSYNC.generation_number gespeichert.
Sie können die Informationen für jede synchronisierte Publikation aufzeichnen. Das folgende Beispiel ruft ml_add_connection_script auf, um das Ereignis der gespeicherten Prozedur RecordPubSync zuzuweisen.
CALL ml_add_connection_script( 'version1', 'begin_publication', '{CALL RecordPubSync( {ml s.generation_number}, {ml s.username}, {ml s.publication_name}, {ml s.last_publication_upload}, {ml s.last_publication_download}, {ml s.subscription_id} )}' ); |
Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine Java-Methode namens beginPublication als das Skript für das Verbindungsereignis begin_publication, wenn die Skriptversion ver1 synchronisiert wird.
CALL ml_add_java_connection_script( 'ver1', 'begin_publication', 'ExamplePackage.ExampleClass.beginPublication' ) |
Im Folgenden sehen Sie die Java-Beispielmethode beginPublication. Sie speichert den Namen jeder Publikation für die spätere Verwendung.
public String beginPublication( ianywhere.ml.script.InOutInteger generation_number, String user, String pub_name, Timestamp last_publication_upload, Timestamp last_download ) { _publicationNames[ _numPublications++ ] = pub_name; return ( null ); } |
Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine .NET-Methode namens BeginPub als das Skript für das Verbindungsereignis begin_publication, wenn die Skriptversion ver1 synchronisiert wird.
CALL ml_add_dnet_connection_script( 'ver1', 'begin_publication', 'TestScripts.Test.BeginPub' ) |
Im Folgenden sehen Sie die .NET-Beispielmethode BeginPub. Sie speichert den Namen jeder Publikation für die spätere Verwendung.
public string BeginPub( ref int generation_number, string user, string pub_name, DateTime last_publication_upload, DateTime last_download ) { _publicationNames[ _numPublications++ ] = pub_name; return ( null ); } |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |