Verwenden Sie diese gespeicherte Prozedur, um benutzerdefinierte Aktionen direkt nach dem Durchsuchen des Transaktionslogs für den Upload einzufügen.
Name |
Wert |
Beschreibung |
---|---|---|
ending log offset (in) |
Nummer |
Der Log-Offset-Wert, bei dem der Scan beendet wurde |
starting log offset_n (in) |
Nummer |
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 das 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 |
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 |
Wenn eine Prozedur dieses Namens vorhanden ist, wird sie aufgerufen, nachdem dbmlsync das Transaktionslog durchsucht hat, um den Upload zusammenzustellen.
Die Aktionen dieser Prozedur werden sofort nach ihrer Ausführung festgeschrieben.
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, unmittelbar nachdem das Transaktionslog für das Upload gescannt wurde. Der #hook_dict log scan retry-Parameter zeigt an, ob das Transaktionslog mehr als einmal gescannt wird.
CREATE PROCEDURE sp_hook_dbmlsync_logscan_end () BEGIN DECLARE scan_retry VARCHAR(128); -- load the scan retry parameter from #hook_dict SELECT #hook_dict.value INTO scan_retry FROM #hook_dict WHERE #hook_dict.name = 'log scan retry'; -- Determine if the log is being rescanned -- and log the synchronization event IF scan_retry='true' THEN INSERT INTO SyncLog (event_name, ml_user,event_time,sync_descr) SELECT 'logscan_end', #hook_dict.value, CURRENT TIMESTAMP, 'Transaction log rescanned' FROM #hook_dict WHERE name = 'MobiLink user' ; ELSE INSERT INTO SyncLog (event_name, ml_user,event_time,sync_descr) SELECT 'logscan_end', #hook_dict.value, CURRENT TIMESTAMP, 'Transaction log scanned normally' FROM #hook_dict WHERE name = 'MobiLink user' ; END IF; END; |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |