Verwenden Sie diese gespeicherte Prozedur, um benutzerdefinierte Aktionen direkt nach dem Durchsuchen des Transaktionslogs einzufügen.
Name | Wert | Beschreibung |
---|---|---|
ending log offset (in) |
Zahl |
Der Log-Offset-Wert, bei dem der Scan beendet wurde |
starting log offset_n (in) |
Zahl |
Der Ausgangswert des Verarbeitungsfortschritts für jede Subskription, die Sie synchronisieren. Die n-Werte entsprechen jenen in publication_n. Beispiel: "Starting log offset_1" ist der Offset für 'publication_1'. |
log scan retry (in) |
true | false |
Wenn das Transaktionslog zum ersten Mal für diese Synchronisation durchsucht wurde, ist der Wert FALSE, andernfalls ist er TRUE. Das Log wird zweimal durchsucht, wenn der MobiLink-Server und dbmlsync unterschiedliche Informationen darüber haben, wo der Durchsuchungsvorgang beginnen soll. |
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 |
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 sofort aufgerufen, nachdem dbmlsync das Transaktionslog durchsucht hat.
Die Aktionen dieser Prozedur werden sofort nach ihrer Ausführung festgeschrieben.
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 Ende des Log-Scans für jede Synchronisation auf.
CREATE PROCEDURE sp_hook_dbmlsync_logscan_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_logscan_end', subs_list ); END |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |