2011-07-11 4 views
4

私は維持しているウェブサイトのデータベースのアーカイブを開始する必要がある時点です。基本的には、毎日多くのトランザクションデータが生成され、約2週間後にはこのデータはほとんど役に立たず、レポート作成のためにはまだ必要ですが、運用サーバーから安全に移動できます。だから、SQL Server - アーカイブに最適なレプリケーションモデル

、私はこれを行うことができれば理想的に、私は大好きだ:

  1. セットアッププルレプリケーション - バックアップサーバーは、時間当たりの生産サーバから変更を取得します。
  2. 日常運用サーバーデータベースがクリーンアップされ、2週間以上経過したエントリが削除されます。

#1 - 私はプルレプリケーションがパフォーマンスの観点から最も効率的な方法であるかどうか不思議ですか?私はプロダクションサーバーに負担をかけることはしません(少なくとも大きな問題はありません)...私はデータベースを同期させておくことについてはあまり気にしません。

#2 - これらの削除が複製されないようにする方法 - そのデータはアーカイブサーバーに保存されますか?

本番サーバがSQL Server 2008のエンタープライズを実行して、バックアップサーバは、(現在はそれがSQL Server 2008のExpressを実行します)に必要なものは何でも実行することができます

+2

#2の場合、レプリカでも削除が行われるため、レプリケーションやミラーリングは使用しません。一般的に私は、別のデータベースへのパーティション分割やマニュアルアーカイブをお勧めしますが、使用しているSQL Serverのバージョンとエディションを忘れてしまった。 –

+0

私は詳細を追加しました...パーティション化も検討していましたが、バックアップ/レポートの複製をプルすることは方法です... – kape123

+1

バックアップ/レポート用の複製を使用して削除することはできません古いデータをソースから削除すると –

答えて

2

#1のために、私はテストにそれを言うと、参照してくださいね。 MSは通常、プルサブスクリプションの方がパフォーマンスが良いというホワイトペーパーをいくつか持っていますが、私はリソースの面でコストがかかっていると言っています。リモートディストリビューター(リモート=パブリッシャーと同じサーバーではない)を設定してください。

#2の場合、いくつかの方法があります。記事をsp_addarticleで設定すると、 "none"という値をとる@del_cmdというパラメータがあります。これにより、ディストリビューションエージェントはサブスクライバでno-opの削除を通知します。ストアドプロシージャを使用してパージを実行し、ストアドプロシージャの実行をレプリケーションのアーティクルとしてセットアップしてから、何もしないサブスクライバでストアドプロシージャを実行することもできます。それぞれのアプローチには長所と短所があります。

+0

#1プルサブスクリプションは、引き出しているマシン上のディストリビューターを生成するので、パフォーマンスに関しては、間違いなく最適です(元のデータベースを持つサーバーは、ローカルレプリケーションデータベースに変更を公開するだけです)...#2役に立つ情報...私はおそらくそれを使用することができます参照してください、私はおそらく私はアーカイブDBに必要なデータをコピーする手続きを書くことに頼るでしょう。 – kape123

+0

for#2削除を行うストアドプロシージャを使用して説明したソリューションで、サブスクライバで何もしなかった同じストアドプロシージャを使用すると、私たちのための優れたソリューションになるはずですが、セットアップしてテストしましたそれは加入者でもデータが削除されているようです。おそらく私は間違ったことをしたでしょうか? –

+0

実際に私は、複製のストアドプロシージャをアーティクルとして作成するとサブスクライバにダミーのものを壊してしまったので、削除を実行したspをコピーしてサブスクライバで実行したと推測しています。 –

0

テーブルのアーカイブにパーティションを適用する必要があると思います。レプリカとアーカイブのデータを2週間以上設定すると、レプリケーションを再初期化し、サブスクライバのすべてのデータが削除され、パブリッシャから新しいデータが適用されるという問題があります。

関連する問題