データベースのアタッチ

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2012 のデータベースをアタッチする方法について説明します。 この機能は、SQL Server データベースのコピー、移動、またはアップグレードに使用できます。

このトピックの内容

  • 作業を開始する準備:

    前提条件

    推奨事項

    セキュリティ

  • 以下を使用してデータベースをアタッチするには:

    SQL Server Management Studio

    Transact-SQL

  • 補足情報: データベースをアップグレードした後

作業を開始する準備

前提条件

  • 最初にデータベースをデタッチする必要があります。 デタッチされていないデータベースをアタッチしようとすると、エラーが返されます。 詳細については、「データベースのデタッチ」を参照してください。

  • データベースをアタッチするときは、すべてのデータ ファイル (MDF ファイルおよび NDF ファイル) を利用できる状態にする必要があります。 データベースを最初に作成したときか最後にアタッチしたときとデータ ファイルのパスが異なる場合、ファイルの現在のパスを指定する必要があります。

推奨事項

データベースを移動するときは、デタッチとアタッチではなく、ALTER DATABASE による計画的再配置用のプロシージャを使用することをお勧めします。 詳細については、「ユーザー データベースの移動」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

セキュリティ

ファイル アクセス許可は、データベースのデタッチやアタッチなど、さまざまなデータベース操作中に設定されます。 データベースをデタッチおよびアタッチするたびに設定されるファイル権限の詳細については、SQL Server 2008 R2 オンライン ブックの「データ ファイルとログ ファイルのセキュリティ保護」を参照してください。

不明なソースや信頼されていないソースからデータベースをアタッチまたは復元しないことをお勧めします。 そのようなデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更することによりエラーを発生させる悪意のあるコードが含まれている可能性があるからです。 不明なソースや信頼されていないソースからのデータベースを使用する前には、非稼働サーバーにあるデータベースで DBCC CHECKDB を実行してください。また、ストアド プロシージャやその他のユーザー定義コードなど、データベースのコードを確認してください。 データベースのアタッチの詳細と、データベースをアタッチする際にメタデータに加わる変更の詳細については、「データベースのデタッチとアタッチ (SQL Server)」を参照してください。

権限

CREATE DATABASE、CREATE ANY DATABASE、または ALTER ANY DATABASE の各権限が必要です。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

SQL Server Management Studio の使用

データベースをアタッチするには

  1. SQL Server Management Studio オブジェクト エクスプローラーで、SQL Server データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. [データベース] を右クリックし、[アタッチ] をクリックします。

  3. アタッチするデータベースを指定するには、[データベースのアタッチ] ダイアログ ボックスで [追加] をクリックし、[データベース ファイルの検索] ダイアログ ボックスで目的のデータベースが常駐するディスク ドライブを選択します。次に、そのディレクトリ ツリーを展開し、そのデータベースの .mdf ファイルを選択します。たとえば、次のように指定します。

    C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf

    重要な注意事項重要

    既にアタッチされているデータベースを選択しようとすると、エラーが発生します。

    • [アタッチするデータベース]
      選択されたデータベースに関する情報を表示します。

    • <空白の列ヘッダー>
      アタッチ操作の状態を示すアイコンが表示されます。 表示されるアイコンの種類は、下の [状態] の説明に示します。

    • [MDF ファイルの場所]
      選択した MDF ファイルのパスとファイル名が表示されます。

    • [データベース名]
      データベースの名前が表示されます。

    • [次の名前でアタッチ]
      データベースを別の名前でアタッチする場合に、その名前を指定します。

    • [所有者]
      データベースの所有者のドロップダウン リストです。これを使用して、必要に応じて別の所有者を選択できます。

    • [状態]
      次の表に示すように、データベースの状態を表示します。

      アイコン

      状態テキスト

      説明

      (アイコンなし)

      (テキストなし)

      このオブジェクトのアタッチ操作が開始されていないか、保留されています。 これは、ダイアログ ボックスを開いたときの既定の状態です。

      緑の右向き三角形

      [実行中]

      アタッチ操作が開始されましたが、完了していません。

      緑のチェック マーク

      [成功]

      オブジェクトは正常にアタッチされました。

      赤い丸の中に白い×印

      [エラー]

      アタッチ操作でエラーが発生し、正常に完了しませんでした。

      4 つに区切られた丸印 (左右の領域が黒、上下の領域が白)

      [停止]

      ユーザーがアタッチ操作を停止したため、正常に完了しませんでした。

      丸の中に反時計回りの矢印

      [ロールバックされました]

      アタッチ操作は正常に完了しましたが、他のオブジェクトのアタッチ中にエラーが発生したため、ロールバックされました。

    • [メッセージ]
      空白のメッセージ、または "ファイルが見つかりません" のハイパーリンクが表示されます。

    • [追加]
      主な必須データベース ファイルを検索します。 ユーザーが .mdf ファイルを選択した場合、[アタッチするデータベース] グリッドの対応するフィールドに、対応する情報が自動的に入力されます。

    • [削除]
      選択したファイルを [アタッチするデータベース] グリッドから削除します。

    • [" <database_name> " データベースの詳細]
      デタッチするファイルの名前を表示します。 ファイルのパス名を確認または変更するには、参照ボタン ([...]) をクリックしてください。

      注意

      ファイルが存在しなかった場合、[メッセージ] 列に "見つかりませんでした" と表示されます。ログ ファイルが見つからない場合は、ログ ファイルが別のディレクトリに置かれているか、削除されています。 [データベースの詳細] グリッドでファイル パスを更新し、正しい場所を指定するか、そのログ ファイルをグリッドから削除します。 .ndf データ ファイルが見つからない場合、グリッドのパスを更新して、正しい場所を指定する必要があります。

    • [元のファイル名]
      データベースに属している、アタッチされたファイルの名前が表示されます。

    • [ファイルの種類]
      ファイルの種類を表します。[データ] または [ログ] になります。

    • [現在のファイル パス]
      選択されているデータベース ファイルのパスを表示します。 このパスは手作業で編集できます。

    • [メッセージ]
      空白のメッセージ、または "ファイルが見つかりません" のハイパーリンクが表示されます。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

Transact-SQL の使用

データベースをアタッチするには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. FOR ATTACH 句を含む CREATE DATABASE ステートメントを使用します。

    次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 この例では、AdventureWorks2012 データベースのファイルをアタッチし、データベースの名前を MyAdventureWorks に変更します。

    CREATE DATABASE MyAdventureWorks 
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), 
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') 
        FOR ATTACH; 
    
    注意

    また、sp_attach_db ストアド プロシージャまたは sp_attach_single_file_db ストアド プロシージャを使用することもできます。 ただし、これらのプロシージャは、Microsoft SQL Server の今後のバージョンでは削除される予定です。 新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。 代わりに、CREATE DATABASE … FOR ATTACH を使用することをお勧めします。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

補足情報: SQL Server データベースのアップグレード後

アタッチする方法によってデータベースをアップグレードした後は、データベースが直ちに使用可能となり、自動的にアップグレードされます。 データベースにフルテキスト インデックスがある場合、アップグレード プロセスでは、"フルテキスト アップグレード オプション" サーバー プロパティの設定に応じて、インポート、リセット、または再構築が行われます。 アップグレード オプションが [インポート] または [再構築] に設定されている場合、アップグレード中はフルテキスト インデックスを使用できなくなります。 インデックスを作成するデータ量によって、インポートには数時間、再構築には最大でその 10 倍の時間がかかることがあります。 なお、アップグレード オプションが [インポート] に設定されており、フルテキスト カタログが使用できない場合は、関連付けられたフルテキスト インデックスが再構築されます。

アップグレード前のユーザー データベースの互換性レベルが 90 または 100 の場合は、アップグレード後も互換性レベルは変わりません。 アップグレード前の互換性レベルが 80 以下の場合、アップグレードされたデータベースの互換性レベルは 90 に設定されます。これは、SQL Server 2012 でサポートされている下限の互換性レベルです。 詳細については、「ALTER DATABASE 互換性レベル (Transact-SQL)」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[先頭に戻る]

関連項目

参照

CREATE DATABASE (Transact-SQL)

概念

データベースのデタッチ