このレッスンでは。リモートデータベースを変更して、新しいカラムを customer テーブルに追加し、同期に使用されるスクリプトバージョンを変更します。
前提条件
このレッスンでは、このチュートリアルの冒頭の「権限」セクションに一覧になっているロールおよび権限を持っていることを前提としています。 チュートリアル:ScriptVersion 拡張オプションを使用したスキーマの変更
このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。 レッスン 1:統合データベースの作成と設定を参照してください。
リモートデータベースを変更し同期用のスクリプトバージョンを作成する前に、アップロードを必要とする customer テーブルに対する操作がないことを確認してください。このための最適な方法として、sp_hook_dbmlsync_schema_upgrade フックでスキーマの変更を実行することが挙げられます。このフックを使用すると、同期の開始時点で同期対象テーブルがロックされ、スキーマの変更が完了するまでロック状態が保持されるため、スキーマの変更が安全に実行されたことを dbmlsync で確認できます。
内容と備考
アップロードする操作があるときにスキーマを変更すると、スキーマ変更後にリモートデータベースで常に同期できなくなります。
リモートデータベースで次の 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; |
sp_hook_dbmlsync_schema_change フックを実行して、アップロードを必要とする操作のアップロードを同期し、スキーマを変更します。次のコマンドを実行します。
dbmlsync -v+ -ot sync2.txt -c UID=DBA;PWD=sql;SERVER=remote -s my_sub -k |
この同期が完了したら、dbmlsync ログ sync2.txt を調べて、スキーマの変更が完了しなかったことを示すエラーがないことを確認してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |