■2015/05/28記事改訂
DBMoto でシンクロナイゼーション(Synchronization)か、双方向のミラーリングを設定しているとき、レプリケーションに関連する両テーブルに変更があり、その変更はそれぞれのテーブルで違っていると仮定してください。
シンクロナイゼーションのゴールは、テーブルAからテーブルBへの変更と、テーブルBからテーブルAへの変更を適応することで、互いに両テーブルを最新に保つことです。
レプリケーション・タイプにシンクロナイゼーションを選択した時は、レプリケーションに関連する両サイドのテーブルの同じレコードで同時に変更が起こる場合にどのように処理するか、設定する必要があります。
例えば同一のレプリケーションインターバル内で、ソースのSQL Server の製品レコードの価格フィールドがアップデートされ、またターゲットのDB2/400で対応するレコードの同じフィールドもアップデートされていた時に、どちらのアップデートを優先するかを決める必要があります。
Replication かMultiple Replications ウィザードを使用してユーザのレプリケーションを定義した後、レプリケーションプロパティ(Replication Properties)ダイアログで優先(Preferences) タブに移行し、どのようにコンフリクトを処理するかを指定します。:
- SourceServerWins:デフォルト設定。ソース接続に指定されたテーブルに対する変更が、ターゲット接続に指定されたテーブルにも適応されます。ターゲット接続テーブル上の変更はすべて書き換えられます。
- TargetServerWins:ターゲット接続に指定されたテーブルに対する変更が、ソース接続で定義されたテーブルにも適応されます。ソース接続テーブル上の変更はすべて書き換えられます。
- FirstComeWins:ソースとターゲットとして指定されたテーブルの2 つの変更のタイムスタンプが準備され、早い方の変更が両テーブルに適応されます。
- LastComeWins:ソースとターゲットとして指定されたテーブルの2 つの変更のタイムスタンプが準備され、遅い方の変更が両テーブルに適応されます。
- Use Script:このオプションはReplication_onConflict ファンクションに記述することでイベントを生成することができます。スクリプト・エディタは「一般」のスクリプトボタンからアクセスできます。VB .NETまたはC# を使用してユーザが希望する両テーブルからの値を処理するためのファンクションを書くことができます。
関連したトピックス
- グループレプリケーションにおける同時DBトランザクションの対策【リアルタイムレプリケーションDBMoto】
- シンクロナイゼーションについて【リアルタイムレプリケーションツールDBMoto】
- レコード登録・更新処理に対するコミット・タイミング処理【リアルタイムレプリケーションツールDBMoto】
- DBMotoが使うスレッド数の算出方法【リアルタイムレプリケーションツールDBMoto】
- レプリケーション定義を一括設定する方法【リアルタイムレプリケーションツールDBMoto】
- リフレッシュモード時のSQL Filter の記載方法【リアルタイムレプリケーションツールDBMoto】
- DBMoto5 FAQ: 2006-7【リアルタイムレプリケーションツールDBMoto】
- Oracle Redo Log の Transaction ID取得に失敗する場合【リアルタイムレプリケーションツールDBMoto】
- 外部DLL(COM)の使用方法【リアルタイムレプリケーションツールDBMoto】
- Oracle Log Miner と Redo Logについて【リアルタイムレプリケーションツールDBMoto】