次の方法で共有


新しい場所と名前でデータベースを復元する方法 (Transact-SQL)

更新 : 2006 年 4 月 14 日

このトピックでは、新しい場所と新しい名前 (省略可能) でデータベースを復元する方法について説明します。

ms190447.security(ja-jp,SQL.90).gifセキュリティ メモ :
不明なソースや信頼されていないソースからのデータベースは、アタッチまたは復元しないことをお勧めします。そのようなデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更することによりエラーを発生させる悪意のあるコードが含まれている可能性があるからです。不明なソースや信頼されていないソースのデータベースは、使用する前に、運用に使用していないサーバーでそのデータベースに対して DBCC CHECKDB を実行し、さらに、そのデータベースのストアド プロシージャやその他のユーザー定義コードなどのコードを調べます。

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

  1. 必要に応じて、RESTORE FILELISTONLY ステートメントを実行し、データベースの完全バックアップ内のファイル数とファイル名を特定します。

  2. 次の項目を指定した RESTORE DATABASE ステートメントを実行し、データベースの完全バックアップを復元します。

    • データベースの新しい名前。
      ms190447.note(ja-jp,SQL.90).gifメモ :
      異なるサーバー インスタンスにデータベースを復元している場合は、新しい名前ではなく元の名前を使用することができます。
    • データベースの完全バックアップの復元元バックアップ デバイス。
    • NORECOVERY 句。ファイル バックアップを復元した後、トランザクション ログ バックアップを適用する場合に指定します。それ以外の場合は、RECOVERY 句を指定します。
      トランザクション ログ バックアップを適用する場合、そのバックアップには、ファイルがバックアップされた時刻を含む情報が格納されている必要があります。
    • MOVE 句。ファイル名が既に存在する場合、新しい場所に復元するファイルごとに指定します。たとえば、テストの目的で、既存のデータベースのコピーを同じサーバー上に作成することが必要な場合もあります。この場合は、元のデータベースのデータベース ファイルが既に存在するので、復元操作でデータベースのコピーを作成するときに、別のファイル名を指定する必要があります。
      MOVE 句の構文は次のようになります。
      MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'
      [ ,...n ] [ , ]
      logical_file_name_in_backup は、バックアップ セット内のデータまたはログ ファイルの名前です。operating_system_file_name は、ファイルの復元先の場所です。n は、追加の MOVE ステートメントを指定できることを示すプレースホルダです。MOVE ステートメントは、バックアップ セットから新しい場所に復元するすべての論理ファイルに指定します。
      ms190447.note(ja-jp,SQL.90).gifメモ :
      バックアップ セットに含まれる論理ファイルの一覧を取得するには、RESTORE FILELISTONLY を使用します。

使用例

この例では、MyAdvWorks という新しいデータベースを作成します。MyAdvWorks は、AdventureWorks_DataAdventureWorks_Log という 2 つのファイルが含まれた既存の AdventureWorks データベースのコピーです。既に AdventureWorks データベースが存在しているので、復元操作の実行時にはバックアップのファイルを移動する必要があります。RESTORE FILELISTONLY ステートメントは、復元するデータベース内のファイルの数と名前を特定するために使用します。

ms190447.note(ja-jp,SQL.90).gifメモ :
AdventureWorks データベースの完全バックアップを作成する方法については、「データベースの完全バックアップを作成する方法 (Transact-SQL)」を参照してください。
ms190447.note(ja-jp,SQL.90).gifメモ :
特定日時への復元を含む、トランザクション ログのバックアップと復元の例では、次の MyAdvWorks の例と同様、AdventureWorks から作成した MyAdvWorks_FullRM データベースを使用します。ただし、作成された MyAdvWorks_FullRM データベースは、ALTER DATABASE MyAdvWorks_FullRM SET RECOVERY FULL を実行して完全復旧モデルを使用するように変更する必要があります。
USE master
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks_Backup is the name of the backup device.
RESTORE FILELISTONLY
   FROM AdventureWorks_Backup
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
   FROM AdventureWorks_Backup
   WITH RECOVERY,
   MOVE 'AdventureWorks_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf', 
   MOVE 'AdventureWorks_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf'
GO

参照

概念

データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理
バックアップと復元のセキュリティについての考慮事項
バックアップと復元によるデータベースのコピー

その他の技術情報

RESTORE (Transact-SQL)
SQL Server Management Studio のチュートリアル

ヘルプおよび情報

SQL Server 2005 の参考資料の入手