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

SAP Sybase SQL Anywhere 16.0 » Mobile Link クイックスタート » Mobile Link チュートリアル » チュートリアル:ScriptVersion 拡張オプションを使用したスキーマの変更

 

レッスン 5:リモートデータベースでのスキーマ変更の実行

このレッスンでは。リモートデータベースを変更して、新しいカラムを customer テーブルに追加し、同期に使用されるスクリプトバージョンを変更します。

前提条件

このレッスンでは、このチュートリアルの冒頭の「権限」セクションに一覧になっているロールおよび権限を持っていることを前提としています。 チュートリアル:ScriptVersion 拡張オプションを使用したスキーマの変更

このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。 レッスン 1:統合データベースの作成と設定を参照してください。

リモートデータベースを変更し同期用のスクリプトバージョンを作成する前に、アップロードを必要とする customer テーブルに対する操作がないことを確認してください。このための最適な方法として、sp_hook_dbmlsync_schema_upgrade フックでスキーマの変更を実行することが挙げられます。このフックを使用すると、同期の開始時点で同期対象テーブルがロックされ、スキーマの変更が完了するまでロック状態が保持されるため、スキーマの変更が安全に実行されたことを dbmlsync で確認できます。

内容と備考

警告

アップロードする操作があるときにスキーマを変更すると、スキーマ変更後にリモートデータベースで常に同期できなくなります。

 ♦ タスク
  1. リモートデータベースで次の SQL 文を実行して、sp_hook_dbmlsync_schema_upgrade フックを作成します。このフックにより、新しいカラムが customer テーブルに追加され、サブスクリプションで格納された ScriptVersion 拡張オプションの値が変更されます。このフックは、実行後に dbmlsync によって削除されます。



    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. sp_hook_dbmlsync_schema_change フックを実行して、アップロードを必要とする操作のアップロードを同期し、スキーマを変更します。次のコマンドを実行します。

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

    この同期が完了したら、dbmlsync ログ sync2.txt を調べて、スキーマの変更が完了しなかったことを示すエラーがないことを確認してください。

結果

これで、スキーマの変更が完了し、正常に同期を続行できます。

次の手順

なし。