2009-07-22 8 views
4

私は何か邪魔になってしまいました。私たちのコントロール下にないデザインのデータベースからトランザクションレプリケーションを実装しようとしていました。この複製は、システムに過度の課金をせずにレポートを実行するためのものでした。レプリケーションを試行すると、一部のテーブルだけが横断しました。プライマリキー(ユニークインデックス)を使用しないトランザクションレプリケーション

プライマリキーを持っていないため、調査テーブルがレプリケートされていないため、管理スタジオではなくODBCとmsアクセスを使用するとプライマリキーとして表示されることはありません。また、クエリは非常に遅くはありません。

重複レコードを挿入しようとしましたが、一意のインデックス(プライマリキーではない)についての説明に失敗しました。主キーに対抗するユニークなインデックスを使用してテーブルになっているように見えます。なぜ私は叫ぶことができるのか分からない。

トランザクションレプリケーションまたはそれ以外の方法を実行するには、とにかくライブにする必要があります(最後の1または2分)。メインdbサーバーは現在sql 2000 sp3aとレポートサーバー2005です。

私が現在考えているのは、別の種類のデータベースであるかのようにレプリケーションを設定することだけです。私は、oracleと言うような複製が可能だと思うのですが、これはアクセスを想定してプライマリキーを表示しているようなODBCドライバの使用を強制します。それが私の深さから正確かどうかは分かりません。

答えて

7

MSDN statesとして、プライマリキーのないテーブルにトランザクションレプリケーションを作成することはできません。あなたは主キーを必要としないMerge replicationを(片道)、使用することができ、それが存在しない場合は、自動的にrowguid列を作成します:

マージレプリケーションは、グローバル 一意識別子(GUID)のカラムを使用しています には、マージ中に各行が識別されます レプリケーションプロセス。公開された テーブルに、ROWGUIDCOLプロパティー とユニークインデックスを持つuniqueidentifier カラムがない場合、レプリケーションでは が追加されます。公開された テーブルを参照するすべてのSELECTおよびINSERT文に列リストを使用するようにしてください。テーブルが で公開されなくなり、レプリケーション が追加された場合、そのカラムは が削除されています。すでに の列が存在する場合は削除されません。

残念ながら、マージレプリケーションを使用するとパフォーマンスが低下します。

だけを報告のレプリケーションを使用する必要がある、とあなたはパブリッシャ上とまったく同じになるようにデータを必要としない場合は、あなたが

+1

また、スナップショットレプリケーションを検討することもできレプリケーションをマージ行うことはできませんこれはguidを追加するので、このデータベースは定期的に通常は列などを追加するように変更され、スクリプトは更新を実行するために私たちに送信されます。私がguidカラムを追加した場合、彼らはサポートを撤回するなどの可能性があります。私はミラーリングを行うことができますし、とにかく読んでいるだけでそれを参照することができますメインDBサーバー上でSQL 2005にアップグレードしない限り私は立ち往生のように見えます。残念ながらライブデータの1分以内にする必要があります。 – PeteT

関連する問題