Verwenden Sie diese gespeicherte Prozedur, um nach einer gescheiterten Verbindungsaufnahme mit dem MobiLink-Server einen neuen Versuch zu starten, indem Sie einen anderen Verbindungstyp oder eine andere Adresse benutzen.
Name | Wert | Beschreibung |
---|---|---|
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 |
connection address (in|out) | Verbindungsadresse | Wenn der Hook aufgerufen wird, ist dies die Adresse, die beim letzten gescheiterten Verbindungsversuch verwendet wurde. Sie können diesen Wert auf eine neue Verbindungsadresse einstellen. Wenn "retry" auf TRUE gesetzt ist, wird dieser Wert beim nächsten Verbindungsversuch verwendet. Eine Liste der Protokolloptionen finden Sie unter Netzwerkprotokolloptionen des MobiLink-Clients. |
connection type (in|out) | Netzwerkprotokoll | Wenn der Hook aufgerufen wird, ist dies das Netzwerkprotokoll (z.B. TCPIP), das beim letzten gescheiterten Verbindungsversuch verwendet wurde. Sie können diesen Wert auf ein neues Netzwerkprotokoll einstellen. Wenn "retry" auf TRUE gesetzt ist, wird dieser Wert beim nächsten Verbindungsversuch verwendet. Eine Liste der Netzwerkprotokolle finden Sie unter Erweiterte Option CommunicationType (ctp). |
user data (in|out) | Benutzerdefinierte Daten | Statusinformationen, die verwendet werden, falls der nächste Verbindungsversuch scheitert. Es könnte zum Beispiel nützlich sein, die Anzahl der aufgetretenen Versuche zu speichern. Standardwert ist eine leere Zeichenfolge. |
allow remote ahead (in|out) | true | false | Dies ist nur TRUE, wenn die dbmlsync-Option -ra oder die Synchronisationsprofiloption RemoteProgressGreater=on für diese Synchronisation angegeben wurde. Durch Ändern des Werts dieser Zeile können Sie den Wert der Option nur für die aktuelle Synchronisation ändern. Siehe dbmlsync-Option -r. |
allow remote behind (in|out) | true | false | Dies ist nur TRUE, wenn die dbmlsync-Option -ra oder die Synchronisationsprofiloption RemoteProgressLess=on für diese Synchronisation angegeben wurde. Durch Ändern des Werts dieser Zeile können Sie den Wert der Option nur für die aktuelle Synchronisation ändern. Siehe dbmlsync-Option -r. |
retry (in|out) | true | false | Setzen Sie diesen Wert auf TRUE, wenn Sie einen gescheiterten Verbindungsversuch erneut probieren wollen. Standardwert ist FALSE. |
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 existiert, wird sie aufgerufen, sobald dbmlsync beim Versuch scheitert, eine Verbindung mit dem MobiLink-Server herzustellen.
Dieser Hook ist nur bei Verbindungsversuchen mit dem MobiLink-Server, und nicht mit der Datenbank anwendbar.
Wenn Offsets für den Verarbeitungsfortschritt nicht übereinstimmen, trennt dbmlsync die Verbindung mit dem MobiLink-Server, um sie später wieder herzustellen. Bei dieser Art der erneuten Verbindungsaufnahme wird dieser Hook nicht aufgerufen, und ein Scheitern der Verbindung bewirkt, dass die Synchronisation fehlschlägt.
Die Aktionen dieser Prozedur werden sofort nach ihrer Ausführung festgeschrieben.
Dieses Beispiel verwendet den sp_hook_dbmlsync_ml_connect_failed-Hook, um die Verbindungsaufnahme bis zu fünf Mal zu versuchen.
CREATE PROCEDURE sp_hook_dbmlsync_ml_connect_failed () BEGIN DECLARE idx integer; SELECT IF value = ''then 0 else cast(value as integer)endif INTO idx FROM #hook_dict WHERE name = 'user data'; IF idx < 5 THEN UPDATE #hook_dict SET value = idx +1 WHERE name = 'user data'; UPDATE #hook_dict SET value = 'TRUE' WHERE name = 'retry'; END IF; END; |
Das nächste Beispiel verwendet eine Tabelle mit Verbindungsinformationen. Wenn ein Verbindungsversuch fehlschlägt, probiert der Hook den nächsten Server auf der Liste.
CREATE TABLE conn_list ( label INTEGER PRIMARY KEY, addr VARCHAR( 128 ), type VARCHAR( 64 ) ); INSERT INTO conn_list VALUES ( 1, 'host=server1;port=91', 'tcpip' ); INSERT INTO conn_list VALUES ( 2, 'host=server2;port=92', 'http' ); INSERT INTO conn_list VALUES ( 3, 'host=server3;port=93', 'tcpip' ); COMMIT; CREATE PROCEDURE sp_hook_dbmlsync_ml_connect_failed () BEGIN DECLARE idx INTEGER; DECLARE cnt INTEGER; SELECT if value = ''then | else cast(value as integer)endif INTO idx FROM #hook_dict WHERE name = 'user data'; SELECT COUNT( label ) INTO cnt FROM conn_list; IF idx <= cnt THEN UPDATE #hook_dict SET value = ( SELECT addr FROM conn_list WHERE label = idx ) WHERE name = 'connection address'; UPDATE #hook_dict SET value = (SELECT type FROM conn_list WHERE label=idx) WHERE name = 'connection type'; UPDATE #hook_dict SET value = idx +1 WHERE name = 'user data'; UPDATE #hook_dict SET value = 'TRUE' WHERE name = 'retry'; END IF; END; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |