web-dev-qa-db-ja.com

データベースを複製して最新の状態に保つ-レプリケーションまたはSSIS?

同じサーバー上でデータベースを複製し、1日に1回スケジュールされたサービスを実行するか、SQL Server 2008でこれを内部的に処理することにより、データベースを最新の状態に保ちたいと思います。

データを変換する必要はなく、DatabaseAからDatabaseBにコピーするだけです(ただし、DatabaseBからDatabaseAにコピーすることはありません)。

レプリケーションサービスまたはSSISジョブのどちらで設定しますか?それぞれの長所と短所は何ですか?

私が行っているのは、ステージングデータベースの読み取りと書き込みを行うステージングアプリケーションを使用できるようにするためですが、ライブデータベースの新しいデータは毎晩ステージングデータベースに取り込まれます。

ライブデータベースは毎日新しいイベントで更新されます。ステージング環境がライブ環境にできるだけ似ていることを確認したいと考えています。

ありがとう、グレッグ。

7
gfyans

バックアップ/復元するだけです。これは同じことを達成し、回復ストーリーを検証し、スキーマ/オブジェクトの変更も簡単に処理します。既存のデータベースに過度の負担をかけることはありません(すでにバックアップしていますか?)。別のサーバー上にある場合(またはそれらを分割した場合)、ミラーリングやレプリケーションではなくログ配布をお勧めします。これにより、ログバックアップ間の長さ、復元の遅延時間、種類使用するメンテナンスウィンドウなど。もちろん、別のサーバー上でも、非常に単純なバックアップ/復元は問題なく機能します。

7
Aaron Bertrand

復元スクリプトがあります

また、最新の「実際の」バックアップも復元します。これにより、バックアップファイルの整合性をテストすることもできます(もちろん、後で破損する可能性がありますが、問題はありません)。この新しいスクリプトは、独自のバックアップを取るべきではありません。

これは現在のショップにありますが、非本番環境に復元します

SSISやレプリケーションは使用しません。データベース全体が必要なので、復元します。

4
gbn

Enterpriseエディションをお持ちの場合は、database snapshotsこれは非常に迅速なプロセスです。それ以外の場合は、TSQLスクリプトを作成してDBをバックアップおよび復元し、SQLエージェントでこれらのスクリプトをスケジュールできます。手順の大まかな概要:DBをバックアップするSQLスクリプトを作成します。このバックアップスクリプトは、使用率が低い時間帯に実行されるようにスケジュールします。次に、前の手順で作成したバックアップからDBを復元する別のSQLスクリプトを作成します。復元スクリプトを、DBの更新されたコピーが必要な時刻に実行されるようにスケジュールします。

レプリケーションは分散データベースでより多く使用されており、今のところやり過ぎかもしれません。

2
StanleyJohns

同じマシンとインスタンスにある場合は、スナップショットを使用します。主にメンテナンスは含まれていません。設定したドライブのスペースを管理するだけで十分です。これは、使用頻度の高いデータベースの場合、かなり高速に成長するためです。

別のマシン上にある場合は、ログ配布をシミュレートするプロセス、または最後のバックアップファイルの単純な復元でさえ十分です。レプリケーションやSSISプロセスはあなたの状況にとって過剰なものになるというスタンと同意します。レプリケーションは、この単純なタスクで使用するには非常に多くの負担がかかり、SSISは過度に複雑になります。

1
Marian