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

SQL Anywhere 12.0.1 (Deutsch) » MobiLink - Erste Orientierung » Praktische Einführungen in MobiLink » Praktische Einführung: Änderung eines Schemas mit der erweiterten Option ScriptVersion

 

Lektion 5: Durchführen einer Schemaänderung in der entfernten Datenbank

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Erstellen und Konfigurieren der konsolidierten Datenbank.

In dieser Lektion ändern Sie die entfernte Datenbank, um eine neue Spalte in die Customer-Tabelle einzufügen und die zur Synchronisation verwendete Skriptversion zu ändern. Bevor Sie dies tun, müssen Sie sicherstellen, dass keine Vorgänge für die Customer-Tabelle laufen, die hochgeladen werden müssen. Die einfachste Möglichkeit hierzu ist das Ausführen der Änderung im sp_hook_dbmlsync_schema_upgrade-Hook. Wenn Sie diesen Hook verwenden, gewährleistet dbmlsync, dass die Schemaänderung sicher erfolgt, indem die Synchronisationstabellen beim Start der Synchronisation gesperrt und die Sperren so lange beibehalten werden, bis die Änderung abgeschlossen ist.

Achtung

Wenn Sie das Schema ändern, obwohl Vorgänge hochgeladen werden müssen, kann die entfernte Datenbank nach einer Schemaänderung keine Synchronisation durchführen.

 Durchführen einer Schemaänderung in der entfernten Datenbank
  1. Erstellen Sie einen sp_hook_dbmlsync_schema_upgrade-Hook mit den folgenden SQL-Anweisungen in der entfernten Datenbank. Der Hook fügt eine neue Spalte der Customer-Tabelle hinzu und ändert den Wert der erweiterten Option ScriptVersion, die mit der Subskription gespeichert ist. Der Hook wird von dbmlsync gelöscht, nachdem er ausgeführt wurde.



    CREATE PROCEDURE sp_hook_dbmlsync_schema_upgrade()
    BEGIN
        ALTER TABLE customer 
        ADD cell_phone varchar(12) default null;
    
        ALTER SYNCHRONIZATION SUBSCRIPTION my_sub
        ALTER OPTION ScriptVersion='my_ver2';
    
        UPDATE #hook_dict
        SET value = 'always'
            WHERE name = 'drop hook';
    END;
  2. Synchronisieren Sie, um Vorgänge hochzuladen, die hochgeladen werden müssen, und um die Schemaänderung durch Ausführen des sp_hook_dbmlsync_schema_change-Hooks durchzuführen. Führen Sie den folgenden Befehl aus.

    dbmlsync -v+ -ot sync2.txt -c UID=DBA;PWD=sql;SERVER=remote -s my_sub -k

    Nach dieser Synchronisation empfiehlt sich ein Blick in das dbmlsync-Log sync2.txt, um sicherzugehen, dass keine Fehlermeldungen einen Fehlschlag der Schemaänderung anzeigen.

    Die Änderung des Schemas ist nun abgeschlossen und Sie können die Synchronisation auf die übliche Weise fortsetzen.