web-dev-qa-db-ja.com

SQL Serverのバックアップ/復元とデタッチ/アタッチ

最新のデータを含むデータベースが1つあり、データベースの内容を他のサーバーに複製したいと考えています。非技術的な理由により、レプリケート機能または同期機能を直接使用して他のSQL Serverインスタンスに同期することはできません。

現在、私には2つのソリューションがあり、各ソリューションの長所と短所を学びたいと思います。ありがとう!

解決策1:最新のデータを含むソースデータベースを切断し、最新のデータを必要とする移行先サーバーにコピーして、移行先サーバーでデータベースを接続します。

解決策2:データベース全体のソースサーバーの完全バックアップを作成してから、データを宛先サーバーにコピーし、宛先サーバー側で完全復旧を実行します。

事前に感謝、ジョージ

35
George2

Detach/Attachオプションは、新しいファイルを作成する必要がないため、バックアップを実行するよりも高速であることがよくあります。したがって、サーバーAからサーバーBまでの時間は、ほぼ純粋にファイルのコピー時間です。

[バックアップ/復元]オプションを使用すると、完全バックアップを実行し、それを復元してから、差分バックアップを実行できます。つまり、2つの間でダウンタイムを短縮できます。

それが目的のデータ複製である場合、それはデータベースを両方の場所で機能させたいという意味ですか?その場合、現在のデータベースが完全に機能するようになるため、おそらくバックアップ/復元オプションが必要です。

編集:いくつかの点を明確にするためです。ダウンタイムとは、あるサーバーから別のサーバーにデータベースを移行する場合、一般的に、転送中はデータベースを使用しないようにすることです。したがって、サーバーAの「停止」ポイントからサーバーBの「開始」ポイントまでは、ダウンタイムと見なすことができます。そうでない場合、転送中にサーバーAのデータベースで実行されたアクションはサーバーBに複製されません。

「新規ファイル作成」に関して。データベースをデタッチする場合は、MDFファイルをすぐにコピーできます。すでにコピーの準備ができています。ただし、バックアップを実行する場合は、.BAKファイルが作成されるまで待つ必要があります。その後、それを復元用の新しい場所に移動します。これはすべて、スナップショットのコピーまたは移行です。

25
Robin Day

代わりに、デタッチアタッチオプションから数分余分に必要になる場合でも、バックアップと復元はより理にかなっています。デタッチの前に元のデータベースをオフラインにする(全員を切断する)必要があります。そうすると、再アタッチするまでデータベースは使用できません。また、バックアップを使用すると、すべてのファイルがグループ化されるのに対し、すべてのファイルを追跡する必要があります。 SQL Serverの最新バージョンでは、バックアップが圧縮されています。

そしてちょうど何かを修正するために:DBバックアップと差分バックアップはログを切り捨てず、ログチェーンを壊しません。

さらに、COPY_ONLY機能は、LOGではなく、差分ベースでのみ重要です。ログチェーンに中断がなかった場合、すべてのログバックアップを任意のバックアップから順番に適用できます。アーカイブポイントには若干の違いがありますが、どこが重要なのかわかりません。

8
Gerard ONeill

ソリューション2が私の選択です...主に、ソースデータベースでダウンタイムが発生しないためです。私が見ることができる唯一の欠点は、データベースの復旧モデルによっては、トランザクションログが切り詰められるということです。つまり、詰め込むトランザクションログからデータを復元したい場合は、バックアップファイルを使用する必要があります。

編集:ニースリンクを見つけました。 http://sql-server-performance.com/Community/forums/p/5838/35573.aspx

4
GordonB