2011-01-27 8 views
1

こんにちは、私はSQL Server 2005で大きなデータベースを持っています。それはとても大きいので、他のサーバーに複製する必要があります。私はSQLレプリケーションパブリッシャとサブスクリプトをセットアップしますが、安定した動作をしません。 挿入物ごとに複製されず、例外も発生しません。 データベースのすべての行、またはすべてのテーブルのいずれかをレプリケートする必要はありません。SQLレプリケーションの代替?

ここにコメントがあります。

ありがとうございます!

更新: 私がここで達成しようとしているのは、データベースの負荷分散です。私はここで多くのトラフィックが発生すると予想しているので、私は、複製されたデータベースを使用して情報をユーザーに表示することを考えています。意味、挿入、更新、削除はメインデータベースで実行され、選択は新しいデータベースで実行されます。レプリケートされたdatabseはselectのためのものであり、ユーザに情報を表示するので、私はアプリケーションのためにアクティブな行を必要とするだけです。また、ここでテーブルを正規化しないで、できるだけ早く結合を使用して情報を取得しないようにすることを考えています。 私が設定したレプリケーションはトランザクションであり、実際には、同じプロセスを実行して行を挿入した後、結果をレプリケートしてからもう一度やり直すという問題があります。それ以来、それはそのように働いています。

答えて

1

あなたがTransactional Replicationを使いたいように聞こえる:

アプリケーションは、時間の変更パブリッシャで行われ、変更がサブスクライバーに到着している間の低遅延を必要とします。

ただし、更新が適用され、サブスクリプションデータベースに表示されるまでにわずかな遅延があることを認識する必要があります。ほとんどのアプリケーションでこれに対処することができますが、古いデータに基づいて作業を実行しないようにするためには、アプリケーションでもっと多くの作業を行う必要があります(考えていると、アプリケーションはおそらくこの種の問題に対処しているはずです。変更を提出する前に、(多くの)分の画面を見てみましょう。あなたはすでにトランザクションレプリケーションを試みたが、問題が発生しましたあなたの編集から見


。私は通常、レプリケーションの設定の数を実践お勧めします実際のデータベースで試行する前にどのように動作しているのかを一般的な感覚で把握するだけで、わずか2つのテーブルとデータの数行から始めることができます。さまざまなオプション。レプリケーションが停止する場合あなたが指示したように(あなたが指示したように)、イベントのために狩りをしたり、何が間違っているか/動作しているかを示すメッセージを記録したりする必要があります。

トランザクションレプリケーションのようなものは本当に必要なものなので、辛抱強く、特定のエラーが発生した場合は、serverfaultを検索するか、そのようなエラーについて新しい質問をしてください。

0

統合サービスを使用して、2番目のサーバーデータベースを実行および更新するようスケジュール設定できるパッケージを作成できます。

+0

これは実質的に瞬間でなければなりません。つまり、挿入、更新、削除がメインデータベースで行われると、すぐに他のデータベースを更新する必要があります。それ以外の場合、ユーザーは常に最新の情報を更新していない可能性があります。 – Ragalante

+0

更新プログラムを実行するトリガーを使用しないのはなぜですか挿入更新の削除が発生したときの2番目のデータベースまたは、データベースをミラーリングします。 –

+0

レプリケーションやミラーを設定するよりも多くの作業が必要になったとしても、私はトリガーについても考えていました。しかし、トリガーは速くなる可能性がありますか?つまり、トリガーはレプリケーションよりも高速または遅いと思いますか? – Ragalante

1

トリガーは良いアイデアだと思いますが、同じ状況がありますが、私のケースでは、すべての異なる場所でデータを送信する必要があり、すべての場所を他の場所のデータと同期させる必要があります。

私は自分のロジックを実装して、サーバのIDとSQLログを持つレプリケーションテーブルを作成しています。

は、すべてのログを各場所にコピーして実行するメインサーバー上で実行されます。

これは私の問題を解決しますが、複製速度を上げるために旅行中にデータを圧縮するような最適化が必要です。毎週各データベースに100000件のエントリがあります。