Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Clientadministration » SQL Anywhere-Clients für MobiLink » Ereignis-Hooks für SQL Anywhere-Clients

 

sp_hook_dbmlsync_delay

Verwenden Sie diese gespeicherte Prozedur, um zu steuern, wo die Synchronisation stattfindet.

Zeilen in der Tabelle #hook_dict

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

Bemerkungen

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.

Siehe auch
Beispiel

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.