主キー(一意のインデックス)とトランザクションレプリケーション
-
19-09-2019 - |
質問
私は不穏な何かに遭遇しましたが、私は、その設計、当社の管理下にないデータベースからのトランザクションレプリケーションを実装しようとしていました。このレプリケーションは、あまりにも多くのシステムに負担をかけずに、レポートを実行するためにでした。複製を試みる際にのみ、いくつかのテーブルの間には行きました。
は、調査表に、彼らは主キーを持っていないために複製されるように選択されていなかった、私はこれは私が管理スタジオでODBCとMSのアクセスを使用しますが、いない場合は、それをしても、主キーとして示されていることはできないと思いました。また、クエリはとてつもなく遅いのではありません。
私は、重複するレコードを挿入しようと、それが一意のインデックス(ないプライマリキー)について言っ失敗しました。主キーに反対するとして、テーブルには、一意のインデックスを使用して実装されているように思われます。なぜ私は悲鳴を上げることができ知りません。
トランザクションレプリケーションまたは代替を実行するためにとにかくあり、それはライブ(最後の2分)にする必要があります。メインDBサーバは、現在、SQL 2000 SP3aのと、レポートサーバー2005です。
それはデータベースの別のタイプであるかのように私は現在しようと考えている唯一のものは、レプリケーションを設定しています。私は、レプリケーションは、Oracleは、私がアクセスは、主キーを示すので、使用していると仮定のようにこの力の使用はODBCドライバを言うことも可能であると言うことと信じています。私はこの上で私の深さの外に正確であるかどうかを知りません。
解決
、トランザクションを作成することはできません主キーがない表のレプリケーション。あなたはマージレプリケーションする(片道)を使用することができ、それは必要ありません。主キー、およびそれが存在しない場合には、自動的にrowguid
列を作成します:
マージレプリケーションを使用している場合は、マージレプリケーションは、グローバルを使用しています 一意識別子(GUID)列に マージ中に各行を識別する 複製プロセス。公表された場合 テーブルには、UNIQUEIDENTIFIERを持っていません ROWGUIDCOLプロパティを持つ列 そして一意のインデックスは、複製が追加されます 1。任意のSELECTとINSERTていることを確認してください 参照が発表されていることステートメント テーブルは、列のリストを使用しています。テーブルには、ある場合には もはや公表しないとレプリケーション 列を追加し、列はあります 削除;すでに列の場合 存在していた、それは削除されません。
残念ながら、あなたは、パフォーマンスの低下を持っています。
あなたは、パブリッシャ上とまったく同じになるようにを報告するの唯一の、そしてあなたが必要のないデータのレプリケーションを使用する必要がある場合、あなたはまた、スナップショットレプリケーションを検討することもできます。