OLE DB USEREPLICATIONUSERオプションを使用した接続

ReplicatがUSEREPLICATIONUSERオプションを指定したOLE DB経由でSQL Serverレプリケーション・ユーザーとして接続し、IDENTITY列に対してNOT FOR REPLICATIONが有効になっている場合、外部キー制約でトリガーされると、次のような利点と制限が適用されます。

  • Replicatが挿入を実行すると、IDENTITYシードがインクリメントされません。双方向のSQL Server構成では、前の項のステップ3で示した例のように、シード値と増分値をずらして設定します。

  • トリガーは、冗長な操作を回避するために、ターゲット上でReplicatユーザーに対して自動的に無効になります。ただし、他のユーザーに対してはターゲット上でトリガーが起動されます。

  • 外部キー制約は、Replicatトランザクションのターゲットに対して強制されません。CASCADE更新および削除は行われません。これらも冗長な操作を防ぎます。

  • CHECK制約は、Replicatトランザクションのターゲットに対して強制されません。これらの制約は、データの取得前にソースに対して強制されますが、ターゲットに制約がないことでデータの整合性の問題が発生するかを検討します。

    ノート:

    通常のIDENTITY、トリガー、および制約の機能は、Replicatレプリケーション・ユーザー以外のユーザーに対しては有効のままです。

USEREPLICATIONUSERを設定してReplicatを使用するには、次のステップに従います。

ノート:

この機能は、Windows上のOracle GoldenGateでのみサポートされています。

ノート:

Oracle GoldenGateサーバーにMicrosoft OLE DB Driver for SQL Serverソフトウェアをインストールします。

https://docs.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server?view=sql-server-ver15

  1. SQL Server Management Studio (またはその他のインタフェース)で、次のオブジェクトにNOT FOR REPLICATIONフラグを設定します。アクティブ/パッシブ構成の場合、パッシブ・データベースでのみ設定します。アクティブ/アクティブ構成の場合、両方のデータベースで設定します。
    • 外部キー制約

    • チェック制約

    • IDENTITY

    • トリガー(定義のテキスト変更が必要です。詳細は、SQL Serverのドキュメントを参照してください。)

  2. 双方向構成用にIDENTITY値をパーティション化します。
  3. ReplicatのMAP文で、ソース表を適切なターゲットにマップし、ソース表がトリガーまたは外部キー・カスケード制約で参照する子表をマップします。トリガーおよびカスケードされる子の操作がOracle GoldenGateによってレプリケートされるため、参照される表を適切なターゲットにマップし、データの整合性を保ちます。ExtractのTABLEパラメータに同じ親と子のソース表を含めます。

    ノート:

    参照先の表がMAP文に含まれていない場合、整合性違反(レプリケートされていない表への外部キーが含まれている表に行が挿入される場合など)をアラートするエラーは表示されません。

  4. Replicatパラメータ・ファイルに、USEREPLICATIONUSERオプションを指定してDBOPTIONSパラメータを含めます。