Verwenden Sie diese gespeicherte Prozedur, um zu steuern, wo die Synchronisation stattfindet.
Name | Wert | Beschreibung |
---|---|---|
delay duration (in|out) |
Anzahl von Sekunden |
Wenn die Prozedur den Wert der Verzögerungsdauer (Delay Duration) auf Null setzt, wird die dbmlsync-Synchronisation unmittelbar fortgesetzt. Wenn der Wert für die Verzögerungsdauer nicht Null ist, wird damit die Anzahl der Sekunden festgelegt, bevor der Verzögerungs-Hook ("delay hook") erneut aufgerufen wird. |
maximum accumulated delay (in|out) |
Anzahl von Sekunden |
Die maximale angesammelte Verzögerung gibt die maximale Anzahl von Sekunden Verzögerung vor jeder Synchronisation an. Dbmlsync registriert die gesamte Verzögerung, die von allen Aufrufen des Verzögerungs-Hooks seit der letzten Synchronisation akkumuliert wurden. Wenn seit dem Start von dbmlsync keine Synchronisation erfolgt ist, wird die Gesamtverzögerung aus der Zeit erreichnet, die seit dem Start von dbmlsync verstrichen ist. Wenn die Gesamtverzögerung den Wert von "maximum accumulated delay" überschreitet, beginnt die Synchronisation ohne weiteren Aufruf des Verzögerungs-Hooks. |
publication_n (in) |
Publikation |
Nicht mehr empfohlen. Verwenden Sie stattdessen subscription_n. Die synchronisierten Publikationen, wobei n eine Ganzzahl ist. Es gibt einen publication_n-Eintrag für jede synchronisierte Publikation. Die Nummerierung von n beginnt bei Null. |
MobiLink user (in ) |
MobiLink-Benutzername |
Der MobiLink-Benutzer, für den Sie synchronisieren |
script version (in) |
Skriptversionsname |
Die MobiLink-Skriptversion, die für die Synchronisation verwendet werden soll |
subscription_n (in) | Subskriptionsname(n) | Die synchronisierten Subskriptionen, wobei n eine Ganzzahl ist. Dies ist ein subscription_n-Eintrag für jede synchronisierte Subskription. Die Nummerierung von n beginnt bei Null. |
Wenn eine Prozedur dieses Namens vorhanden ist, wird sie zu Beginn des Synchronisationsprozesses vor sp_hook_dbmlsync_begin aufgerufen.
Dieser Hook wird nicht aufgerufen, wenn die Synchronisation mit der Dbmlsync-API oder der SQL SYNCHRONIZE-Anweisung initiiert wird.
Die Aktionen dieser Prozedur werden sofort nach ihrer Ausführung festgeschrieben.
Nehmen wir an, Sie verwenden die folgende Tabelle, um Bestellungen in der entfernten Datenbank zu protokollieren.
CREATE TABLE OrdersTable( "id" INTEGER PRIMARY KEY DEFAULT AUTOINCREMENT, "priority" VARCHAR(128) ); |
Das folgende Beispiel verzögert die Synchronisation um eine maximale Gesamtverzögerung von einer Stunde. Alle zehn Sekunden wird der Hook erneut aufgerufen, der die Tabelle OrdersTable auf eine Zeile hoher Priorität überprüft. Wenn eine Zeile hoher Priorität existiert, wird "delay duration" auf Null gesetzt, um den Synchronisationsprozess zu starten.
CREATE PROCEDURE sp_hook_dbmlsync_delay() BEGIN -- Set the maximum delay between synchronizations -- or before the first synchronization starts to 1 hour UPDATE #hook_dict SET value = '3600' // 3600 seconds WHERE name = 'maximum accumulated delay'; -- check if a high priority order exists in OrdersTable IF EXISTS (SELECT * FROM OrdersTable where priority='high') THEN -- start the synchronization to process the high priority row UPDATE #hook_dict SET value = '0' WHERE name='delay duration'; ELSE -- set the delay duration to call this procedure again -- following a 10 second delay UPDATE #hook_dict SET value = '10' WHERE name='delay duration'; END IF; END; |
Im sp_hook_dbmlsync_end-Hook können Sie die Zeile hoher Priorität als verarbeitet markieren.
CREATE PROCEDURE sp_hook_dbmlsync_upload_end() BEGIN IF EXISTS( SELECT value FROM #hook_dict WHERE name = 'Upload status' AND value = 'committed' ) THEN UPDATE OrderTable SET priority = 'high-processed' WHERE priority = 'high'; END IF; END; |
In diesem Beispiel wird vorausgesetzt, dass Sie die erweiterte LockTables-Option verwendet haben, um sicherzustellen, dass die Tabellen während der Synchronisation gesperrt sind. Wenn die Tabellen nicht gesperrt sind, ist es möglich, dass eine Zeile hoher Priorität eingefügt wurde, nachdem der Upload erstellt wurde, jedoch noch bevor der Hook sp_hook_dbmlsync_end ausgeführt wird. In diesem Fall wird die Priorität der Zeile in "high-processed" geändert, auch wenn sie nie hochgeladen wurde.
Siehe sp_hook_dbmlsync_end.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |