バックアップと復元によるデータベースのコピー

SQL Server 2008 R2 では、SQL Server 2000、SQL Server 2005、SQL Server 2008、SQL Server 2008 R2 のいずれかを使用して作成したデータベース バックアップを復元して、新しいデータベースを作成できます。ただし、SQL Server 2000 または SQL Server 2005 を使用して作成された mastermodel、および msdb のバックアップを SQL Server 2008 R2 で復元することはできません。また、SQL Server 2008 R2 のバックアップを以前のバージョンの SQL Server で復元することもできません。

SQL Server 7.0 以前のバージョンで作成されたデータベース バックアップは互換性のない形式なので、SQL Server 2008 R2 では復元できません。SQL Server 6.5 以前のバージョンを使用して作成されたデータベースを SQL Server 2005 に移行する方法については、「SQL Server 7.0 以前のバージョンからのデータベースのコピー」を参照してください。

重要な注意事項重要

SQL Server 2008 および SQL Server 2008 R2 では、以前のバージョンとは異なる既定パスを使用します。そのため、SQL Server 2000 または SQL Server 2005 の既定の場所で作成されたデータベースをバックアップから復元するには、MOVE オプションを使用する必要があります。新しい既定パスの詳細については、「SQL Server の既定のインスタンスおよび名前付きインスタンスのファイルの場所」を参照してください。データベース ファイルの移動の詳細については、このトピックの「データベース ファイルの移動」を参照してください。

バックアップと復元を使用してデータベースをコピーする一般的な手順

バックアップと復元を使用して他の SQL Server インスタンスにデータベースをコピーするとき、SQL Server を実行するコピー元とコピー先のコンピューターのプラットフォームは問いません。

一般的な手順は次のとおりです。

  1. SQL Server 2000、SQL Server 2005、SQL Server 2008、または SQL Server 2008 R2 のいずれかのインスタンスにあるコピー元データベースをバックアップします。この SQL Server インスタンスを実行しているコンピューターがコピー元コンピューターです。

  2. データベースをコピーする先のコンピューター (コピー先コンピューター) で、データベースの復元先の SQL Server インスタンスに接続します。必要に応じて、コピー元データベースのバックアップに使用したのと同じバックアップ デバイスをコピー先のサーバー インスタンスにも作成します。

  3. コピー元データベースのバックアップをコピー先コンピューターに復元します。データベースを復元すると、すべてのデータベース ファイルが自動的に作成されます。

次のトピックで、この処理に影響する可能性がある考慮事項について説明します。

データベース ファイルを復元する前に

データベースを復元すると、復元しているデータベースに必要なファイルが自動的に作成されます。既定では、復元操作時に SQL Server によって作成されるファイルの名前とパスは、コピー元コンピューター上の元のデータベースのバックアップ ファイルと同一です。次に示す理由により、エラーや予期しない結果を防ぐために、復元操作により自動的に作成されるファイルを復元操作の前に把握しておいてください。

  • ファイル名がコンピューター上に既に存在していることがあり、その場合はエラーになります。

  • コピー先の場所の容量が十分ではない場合があります。

  • ディレクトリ構造やドライブ マッピングがコピー先のコンピューター上に存在しない場合があります。

    たとえば、ドライブ E に復元する必要があるファイルがバックアップに含まれているのに、コピー先コンピューターにドライブ E が存在しない場合です。

  • データベース ファイルを置換できる場合、バックアップ内のものと名前が同じ既存のデータベースやファイルは、別のデータベースに属している場合を除いて上書きされます。

注記注意

既存のデータベースの名前とコピー先を再利用する場合、ファイルが上書き可能であれば、バックアップにあるものと名前が同じ既存のファイルはすべて上書きされます。

データベースを復元するときに、復元するデータベースのデバイス マッピング、ファイル名、またはパスを (必要であれば) 指定できます。

データベース ファイルの移動

上記の理由によりデータベース バックアップ内のファイルをコピー先コンピューターに復元できない場合は、復元のときにファイルを新しい場所に移動する必要があります。次に例を示します。

  • SQL Server 2000 または SQL Server 2005 の既定の場所に作成されたバックアップからデータベースを復元する場合。

  • 容量の制限により、バックアップ内のデータベース ファイルを別のドライブに復元する必要がある場合。ディスク ドライブの数やサイズ、またはソフトウェア構成が同じであるコンピューターが組織内に存在することはまれなので、このようなことが頻発します。

  • 既存のデータベースをテストするため、そのコピーを同じコンピューター上に作成する必要がある場合。この場合、元のデータベースのデータベース ファイルが既に存在するので、復元操作でデータベースをコピーする場合は異なるファイル名を指定する必要があります。

詳細については、このトピックの「ファイルとファイル グループを新しい場所に復元するには」を参照してください。

データベース名の変更

データベースをコピー先コンピューターに復元するときにデータベースの名前を変更できます。データベースを先に復元してから名前を手動で変更する必要はありません。たとえば、データベースがコピーであることを示すため、名前を Sales から SalesCopy に変更する必要がある場合があります。

データベースを復元するときに明示的に指定するデータベース名が、新しいデータベース名として自動的に使用されます。そのデータベース名はまだ存在していないため、新しい名前のデータベースがバックアップ内のファイルを使用して作成されます。

復元を使用してデータベースをアップグレードする場合

バックアップを SQL Server 2000 または SQL Server 2005 から復元する場合は、バックアップにある各フルテキスト カタログのパス (ドライブとディレクトリ) がコピー先コンピューターに存在するかどうかを事前に知っておくと便利です。バックアップにある、カタログ ファイルを含めたすべてのファイルの論理名と物理名 (パスとファイル名) を一覧にするには、RESTORE FILELISTONLY FROM <backup_device> ステートメントを使用します。詳細については、「RESTORE FILELISTONLY (Transact-SQL)」を参照してください。

コピー先のコンピューターに同一のパスが存在しない場合、2 つの方法で対処できます。

  • コピー先コンピューターにも同じドライブ/ディレクトリ マッピングを作成します。

  • RESTORE DATABASE ステートメントで WITH MOVE 句を使用して、復元操作中にカタログ ファイルを新しい場所に移動します。詳細については、「RESTORE (Transact-SQL)」を参照してください。

フルテキスト インデックスをアップグレードするための別のオプションの詳細については、「フルテキスト検索のアップグレード」を参照してください。

データベースの所有権

データベースを別のコンピューターに復元すると、復元操作を開始した SQL Server ログイン ユーザーまたは Microsoft Windows ユーザーが自動的に新しいデータベースの所有者になります。復元されたデータベースのシステム管理者または新しいデータベース所有者は、そのデータベースの所有権を変更できます。認められていないデータベースの復元を防止するため、メディアまたはバックアップ セットのパスワードを使用してください。詳細については、「バックアップと復元のセキュリティについての考慮事項」を参照してください。

別のサーバー インスタンスに復元するときのメタデータの管理

データベースを別のサーバー インスタンスに復元するときは、ユーザーおよびアプリケーションに一貫した使用環境を提供するために、復元先のサーバー インスタンスで、ログインやジョブなどのデータベースのメタデータの一部またはすべてを作成し直す必要がある場合があります。詳細については、「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理」を参照してください。

バックアップ セットに含まれているデータ ファイルおよびログ ファイルを表示するには

ファイルとファイル グループを新しい場所に復元するには

ファイルとファイル グループを既存のファイルに復元するには

ファイルとファイル グループを新しい場所に復元するには

新しい名前でデータベースを復元するには

中断された復元操作を再開するには

データベースの所有者を変更するには

SQL Server 管理オブジェクト (SMO) を使用してデータベースをコピーするには