Verwenden Sie diese gespeicherte Prozedur, um benutzerdefinierte Aktionen einzufügen, nachdem dbmlsync den Empfang des Uploads durch den MobiLink-Server geprüft hat.
Name | Wert | Beschreibung |
---|---|---|
failure cause (in) |
Weitere Hinweise finden Sie im Abschnitt "Bemerkungen". |
Der Grund, warum ein Upload fehlgeschlagen ist. Weitere Hinweise finden Sie unter "Bemerkungen". |
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 - Der Upload wurde vom MobiLink-Server nicht bestätigt. Es gibt keine Möglichkeit zu erkennen, ob der Upload festgeschrieben wurde oder nicht. |
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 |
authentication value (in) | Wert |
Dieser Wert gibt die Ergebnisse des Versuchs von dbmlsync an, sich am MobiLink-Server zu authentifizieren. Er 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. |
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 aufgerufen, unmittelbar nachdem dbmlsync den Upload gesendet und die Bestätigung dafür vom MobiLink-Server erhalten hat.
Wenn Sie einen transaktionalen Upload oder einen inkrementellen Upload durchführen, wird dieser Hook nach dem Senden jedes Upload-Segments aufgerufen. In diesen Fällen ist der Upload-Status beim Aufrufen des Hook unbekannt, außer beim letzten Mal.
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_INVALID_USERID_OR_PASSWORD Benutzer-ID oder Kennwort war falsch.
UPLD_ERR_USERID_OR_PASSWORD_EXPIRED Benutzer-ID oder Kennwort ist abgelaufen.
UPLD_ERR_REMOTE_ID_ALREADY_IN_USE Die entfernte ID wird bereits benutzt.
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.
UPLD_ERR_USER_ABORT_REQUEST Der Upload wurde auf Anforderung des Benutzers abgebrochen.
Hook-Prozeduren können von jedem Benutzer mit dem MANAGE REPLICATION-Systemprivileg erstellt werden. Um jedoch zu gewährleisten, dass ein Hook auf die #hook_dict-Tabelle zugreifen kann, die verwendet wird, um Daten an und aus Hooks zu übergeben, müssen Hooks eine der folgenden Anforderungen erfüllen:
Eigentümer muss ein Benutzer sein, der die Systemprivilegien SELECT ANY TABLE und UPDATE ANY TABLE hat.
Sie müssen durch die SQL SECURITY INVOKER-Klausel der CREATE PROCEDURE-Anweisung definiert sein.
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_time" timestamp NULL, "event_name" varchar(128) NOT NULL , "subs" varchar(1024) NULL , PRIMARY KEY ("event_id") ) |
Folgendes zeichnet das Upload-Ende für jede Synchronisation auf.
CREATE PROCEDURE sp_hook_dbmlsync_upload_end () BEGIN DECLARE subs_list VARCHAR(1024); -- build a list of subscriptions being synchronized SELECT LIST(value) INTO subs_list FROM #hook_dict WHERE name LIKE 'subscription_%'; -- log the event INSERT INTO SyncLog(event_time, event_name, subs) VALUES( CURRENT TIMESTAMP, 'sp_hook_dbmlsync_upload_end', subs_list ); END |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |