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, geht die dbmlsync-Synchronisation weiter. 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 |
Die synchronisierten Publikationen, wobei n eine Ganzzahl ist. Es gibt einen publication_n-Eintrag für jede Publikation im Upload. 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 |
Wenn eine Prozedur dieses Namens vorhanden ist, wird sie zu Beginn des Synchronisationsprozesses vor sp_hook_dbmlsync_begin aufgerufen.
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; |
Weitere Hinweise finden Sie unter sp_hook_dbmlsync_end.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |