QUESTION(SQ0202028)
SQL Remoteのアーティクル設定を変更した場合、再抽出以外にリモート環境を同期させる方法
ANSWER
SQL
Remoteのアーティクル設定を変更した場合、データベースの再抽出を推奨致しますが、別の方法として、パススルー・モードの使用があります。
統合データベースのパブリッシャは、パススルー・モードを使用してリモート・サイトに直接介入できます。このモードを使用すると、標準SQL文をリモート・サイトに渡すことができます。
例えば、データベースの抽出後にテーブルAにカラムを1つ追加し、そのカラムをアーティクルに追加するような場合は、以下のSQL文を統合側で実行し、その後Remote処理を実行すると、リモート側で同じ変更処理が行われます。
テーブル名:test
パブリケーション名:pub_test
リモートユーザー名:remote
追加カラム名:c
PASSTHROUGH FOR remote;
ALTER TABLE TEST ADD c integer;
ALTER PUBLICATION pub_test MODIFY TABLE test(c);
PASSTHROUGH STOP;
ただし、パススルー・モードは強力なツールであり、慎重に使用する必要があります。いくつかの文、特にデータ定義文では、実行中のSQL
Remote設定に障害が生じる可能性があります。SQL
Remoteは、同じオブジェクトを持つ各データベースに基づいて設定を行います。つまり、あるテーブルが一部のサイトで変更されたが、一部のサイトでは変更されていない場合に、データ変更をレプリケートしようとすると失敗します。
<パススルー・モードの使用に関する注意>
オンラインヘルプよりリモート・データベースにサブスクリプションを作成した状態で、テスト・データベースに対して常にパススルー・オペレーションをテストする必要があります。
テストしていないパススルー・スクリプトは、運用データベースに対して決して実行しないでください。
オブジェクト名は、常に所有者名によって修飾する必要があります。PASSTHROUGH文が、同じユーザIDからリモート・データベースで実行されることはありません。したがって、所有者名修飾子のないオブジェクト名は正しく解析されない場合があります。
|