Verwenden Sie diese gespeicherte Prozedur, um benutzerdefinierte Aktionen direkt nach dem Download jeder Tabelle einzufügen.
Name | Wert | Beschreibung |
---|---|---|
table name (in) |
Tabellenname |
Die Tabelle, in der Vorgänge gerade übernommen wurden |
delete count (in) |
Anzahl von Zeilen |
Die Anzahl der Zeilen in dieser Tabelle, die durch den Download gelöscht werden |
upsert count (in) |
Anzahl von Zeilen |
Die Anzahl der Zeilen in dieser Tabelle, die durch den Download aktualisiert oder eingefügt werden |
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 Publikation der Synchronisation. 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 mit diesem Namen besteht, wird sie unmittelbar nach dem Punkt aufgerufen, an dem alle Vorgänge im Download für eine Tabelle übernommen wurden.
Die Aktionen dieser Prozedur werden festgeschrieben bzw. zurückgesetzt, wenn der Download festgeschrieben bzw. zurückgesetzt wird.
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 Download-Ende der einzelnen Tabellen für jede Synchronisation auf.
CREATE PROCEDURE sp_hook_dbmlsync_download_table_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_download_table_end, subs_list ); END |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |