Unmittelbar bevor ein Ereignis-Hook aufgerufen wird, erstellt dbmlsync die #hook_dict-Tabelle in der entfernten Datenbank mit der folgenden CREATE-Anweisung. Das # vor dem Tabellennamen bedeutet, dass die Tabelle eine temporäre Tabelle ist.
CREATE TABLE #hook_dict( name VARCHAR(128) NOT NULL UNIQUE, value VARCHAR(10240) NOT NULL) |
Das Dienstprogramm dbmlsync verwendet die Tabelle #hook_dict, um Werte an Hook-Funktionen weiterzugeben. Hook-Funktionen verwenden die Tabelle #hook_dict, um Werte an dbmlsync zurückzugeben.
Jede Hook-Prozedur empfängt Parameterwerte. In einigen Fällen können Sie den Wert ändern, damit ein neuer Wert zurückgegeben wird. Andere Parameter sind schreibgeschützt. Jede einzelne Zeile in der Tabelle enthält den Wert für einen Parameter.
Zwei Subskriptionen können z.B. wie folgt definiert sein:
CREATE SYNCHRONIZATION SUBSCRIPTION sub1 TO pub1 FOR MyUser; SCRIPT VERSION 'v1' |
CREATE SYNCHRONIZATION SUBSCRIPTION sub2 TO pub2 FOR MyUser; SCRIPT VERSION 'v1' |
Wenn sp_hook_dbmlsync_begin für die folgenden Befehlszeile von dbmlsync aufgerufen wird:
dbmlsync -c 'DSN=MyDsn' -s sub1,sub2 |
enthält die #hook_dict-Tabelle die folgenden Zeilen:
Name | Wert |
---|---|
subscription_0 |
sub1 |
subscription_1 |
sub2 |
publication_0 |
pub1 |
publication_1 |
pub2 |
MobiLink user |
MyUser |
Script version |
v1 |
Die publication_n-Zeilen werden nicht mehr empfohlen und in einer zukünftigen Version möglicherweise entfernt.
Ein Hook kann Werte aus der Tabelle #hook_dict abrufen und sie benutzen, um sein Verhalten anzupassen. Um beispielsweise den MobiLink-Benutzer abzurufen, verwenden Sie eine SELECT-Anweisung der folgenden Art:
SELECT value FROM #hook_dict WHERE name = 'MobiLink user' |
I/O-Parameter können von Ihrem Hook aktualisiert werden, um das Verhalten von dbmlsync zu ändern. Im sp_hook_dbmlsync_abort-Hook können Sie beispielsweise dbmlsync anweisen, die Synchronisation abzubrechen, indem die Synchronisationszeile 'abort' der Tabelle mit einer Anweisung der folgenden Art aktualisieren:
UPDATE #hook_dict SET value='true' WHERE name='abort synchronization' |
Die Beschreibung der einzelnen Hooks listet die Zeilen in der Tabelle #hook_dict auf.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |