2016-12-06 1 views
0

私たちは、選択されたデータをレポートに使用されるデータベースBUSINESSに複製する店舗データベースOPERATIONを持っています。 OPERATIONのデータはサードパーティのショップフロアアプリケーションによって毎日削除されるため、BUSINESSのデータを保持するために、DELETE配信形式をArticleプロパティに設定しました。DELETE文を複製しないでください削除されていないデータを失うことなくデータベースをスナップショットする方法はありますか?

これはうまくいきますが、時には誰かが余分な/別のものを複製したいと思うことがあります。出版物への変更の性質に応じて、スナップショットの再初期化を促すことがあります。これはもちろん、ビジネス上のデータベースを吹き飛ばしてしまいます(私は残念なことに1日を過ごしました)。

この場合の最善の方法は何ですか?

答えて

1

レプリケーションの代わりにETLプロセスを実装することをお勧めします。

SSISを使用して、OPERATIONデータベースからデータを抽出し、それをBUSINESSデータベースにコピーできます。 SSISパッケージでは、ロジックを完全に制御できます。たとえば、BUSINESSの既存データにデータを追加することができます。 MERGEを使用すると、新しいレコードを挿入して既存のレコードを変更できます(この方法では、変更されていないデータが上書きされないため、繰り返し実行することができます)。

誰かが追加データをリクエストした場合、メインプロセスに影響を与えずに追加のデータを転送するための新しいSSISパッケージを作成するだけです。

SSISは、SQLエージェントジョブから実行するようにスケジュールできます(たとえば、dtexecを使用します)。

+0

特にレプリケーションに固執したい理由がいくつかあります。 1.出版社への影響は低く、リアルタイム操作にとって重要です。 –

+0

2.サードパーティのアプリケーションがOPERATIONデータベースからデータを削除する時刻は必ずしも一貫しているわけではないので、あなたが提案したシナリオでは、一部のレコードをキャプチャできない可能性があります。 –

+0

私は、 "ステージング"データベースにすべてを複製し、それをレポートデータベースへのETLプロセスのソースとして使用することをお勧めします。このようにして、あなたは両方の世界の最高の状態を保ちます。ほとんど変更されないレプリケーション(OPERATIONデータベースの変更がある場合のみ)、およびBUSINESSデータベースに転送されるものの完全な制御。 – under

関連する問題