Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Clientadministration » SQL Anywhere-Clients für MobiLink » Ereignis-Hooks für SQL Anywhere-Clients

 

sp_hook_dbmlsync_ml_connect_failed

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.

Zeilen in der Tabelle #hook_dict

Name

Wert

Beschreibung

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

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 Übersicht über die Netzwerkprotokolloptionen des MobiLink-Clients.
connection type (in|out) Netzwerkprotokoll Wenn der Hook aufgerufen wird, ist dies das Netzwerkprotokoll (z. B. TCPIP), das bei den letzten gescheiterten Verbindungsversuchen 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 dbmlsync mit der Option -ra gestartet wurde. Sie können diese Zeile nur bei der aktuellen Synchronisation verwenden, um die Option -ra zu lesen oder zu ändern. Weitere Hinweise finden Sie unter Option -r.
allow remote behind (in|out) true | false Dies ist nur TRUE, wenn dbmlsync mit der Option -rb gestartet wurde. Sie können diese Zeile nur bei der aktuellen Synchronisation verwenden, um die Option -rb zu lesen oder zu ändern. Weitere Hinweise finden Sie unter Option -r.
retry (in|out) true | false Setzen Sie diesen Wert auf TRUE, wenn Sie einen gescheiterten Verbindungsversuch erneut probieren wollen. Standardwert ist FALSE.
Bemerkungen

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.

Beispiele

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 value
      INTO buf
      FROM #hook_dict
      WHERE name = 'user data';
       
  IF idx <= 5 THEN
        UPDATE #hook_dict 
        SET value = idx 
        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 value
  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
        WHERE name = 'user data'; 
       
       UPDATE #hook_dict 
        SET value = 'TRUE'
        WHERE name = 'retry';
 END IF;
END;