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_upload_end

Verwenden Sie diese gespeicherte Prozedur, um benutzerdefinierte Aktionen einzufügen, nachdem dbmlsync den Empfang des Uploads durch den MobiLink-Server geprüft hat.

Zeilen in der Tabelle #hook_dict

Name

Wert

Beschreibung

failure cause (in)

Siehe Wertebereich bei "Bemerkungen" weiter unten.

Der Grund, warum ein Upload fehlgeschlagen ist. Weitere Hinweise finden Sie nachstehend im Abschnitt unter "Beschreibung".

upload status (in)

retry | committed | failed | unknown

Gibt den Status an, der vom MobiLink-Server zurückgegeben wird, wenn dbmlsync versucht, den Empfang des Uploads zu prüfen.

retry - Der MobiLink-Server und dbmlsync hatten unterschiedliche Werte für den Log-Offset, von dem der Upload starten sollte. Der Upload wurde vom MobiLink-Server nicht festgeschrieben. Das Dienstprogramm dbmlsync versucht, einen anderen Upload zu senden, der bei einem neuen Log-Offset beginnt.

committed - Der Upload wurde vom MobiLink-Server empfangen und festgeschrieben.

failed - Der MobiLink-Server hat den Upload nicht festgeschrieben.

unknown - Dbmlsync wurde mit der Option -tu gestartet, sodass Uploads auf Transaktionsebene erfolgen. Bei jeder Transaktion, für die ein Upload erfolgt, werden die Hook-Prozeduren sp_hook_dbmlsync_upload_begin und sp_hook_dbmlsync_upload_end aufgerufen, der Upload-Statuswert ist in jedem Fall außer beim letzten Upload unknown.

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

authentication value (in) Wert

Dieser Wert wird von den Skripten authenticate_user, authenticate_user_hashed oder authenticate_parameters auf dem Server generiert. Der Wert ist eine leere Zeichenfolge, wenn der Upload-Status unbekannt ist oder die Hook-Prozedur upload_end nach dem Neusenden eines Uploads aufgerufen wird, weil ein Konflikt zwischen den in der entfernten und der konsolidierten Datenbank gespeicherten Log-Offsets aufgetreten ist.

Bemerkungen

Wenn eine Prozedur dieses Namens vorhanden ist, wird sie aufgerufen, unmittelbar nachdem dbmlsync den Upload gesendet und die Bestätigung dafür vom MobiLink-Server erhalten hat.

Die Aktionen dieser Prozedur werden sofort nach ihrer Ausführung festgeschrieben.

Folgende Parameterwerte sind für die Zeile "failure cause" in der Tabelle #hook_dict möglich:

  • UPLD_ERR_ABORTED_UPLOAD   Der Upload ist aufgrund eines Fehlers auf dem entfernten Server fehlgeschlagen. Häufige Gründe für ein solches Fehlschlagen sind Verbindungsfehler und mangelnde Speicherkapazität.

  • UPLD_ERR_COMMUNICATIONS_FAILURE   Ein Kommunikationsfehler ist aufgetreten.

  • UPLD_ERR_LOG_OFFSET_MISMATCH   Der Upload ist wegen eines Konflikts zwischen den Werten für den Log-Offset, die in der entfernten und in der konsolidierten Datenbank gespeichert sind, fehlgeschlagen.

  • UPLD_ERR_GENERAL_FAILURE   Der Upload ist aus einem unbekannten Grund fehlgeschlagen.

  • UPLD_ERR_INVALID_USERID_OR_PASSWORD   Benutzer-ID oder Kennwort war falsch.

  • UPLD_ERR_USERID_OR_PASSWORD_EXPIRED   Benutzer-ID oder Kennwort ist abgelaufen.

  • UPLD_ERR_USERID_ALREADY_IN_USE   Benutzer-ID wird bereits benutzt.

  • UPLD_ERR_DOWNLOAD_NOT_AVAILABLE   Der Upload war in der konsolidierten Datenbank festgeschrieben, jedoch ist ein Fehler aufgetreten, der MobiLink daran gehindert hat, den Download zu erzeugen.

  • UPLD_ERR_PROTOCOL_MISMATCH   dbmlsync hat unerwartete Daten vom MobiLink-Server erhalten.

  • UPLD_ERR_SQLCODE_n   Hier ist n eine Ganzzahl. In der konsolidierten Datenbank ist ein SQL-Fehler aufgetreten. Die angegebene Ganzzahl ist der SQLCODE für den eingetretenen Fehler.

Siehe auch
Beispiele

Nehmen wir an, Sie verwenden die folgende Tabelle, um Synchronisationsereignisse in der entfernten Datenbank zu protokollieren.

CREATE TABLE SyncLog(
   "event_id"          INTEGER NOT NULL DEFAULT AUTOINCREMENT ,
   "event_name"       VARCHAR(128) NOT NULL ,
   "ml_user"            VARCHAR(128) NULL ,
   "event_time"         TIMESTAMP NULL,
   "table_name"         VARCHAR(128) NULL ,
   "upsert_count"       VARCHAR(128) NULL ,
   "delete_count"       VARCHAR(128) NULL ,
   "exit_code"          INTEGER NULL ,
   "status_retval"      VARCHAR(128) NULL ,
   "pubs"                VARCHAR(128) NULL ,
   "sync_descr "         VARCHAR(128) NULL , 
     PRIMARY KEY ("event_id"),
);

Das folgende Beispiel protokolliert den MobiLink-Benutzer und den aktuellen Zeitstempel, nachdem dbmlsync überprüft hat, dass der MobiLink-Server den Upload erhalten hat.

CREATE PROCEDURE sp_hook_dbmlsync_upload_end ()
BEGIN
 
 DECLARE status_return_value VARCHAR(255);

 -- store status_return_value
  SELECT #hook_dict.value
  INTO status_return_value
  FROM #hook_dict
  WHERE #hook_dict.name = 'upload status';

   INSERT INTO SyncLog (event_name, ml_user,
     status_retval, event_time)
   SELECT 'upload_end', #hook_dict.value,
     status_return_value, CURRENT TIMESTAMP
  FROM #hook_dict
  WHERE name = 'MobiLink user';
END;