次の方法で共有


データベースのインポート

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

このトピックの内容

始める前に

前提条件

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

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

  • データベースをアタッチするときに、MDF ファイルと LDF ファイルが異なるディレクトリにあり、いずれかのパスに \\?\GlobalRoot が含まれている場合、操作は失敗します。

推奨事項

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

セキュリティ

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

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

アクセス許可

CREATE DATABASECREATE 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\MSSQL12.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf

    重要

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

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

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

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

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

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

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

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

    アイコン 状態テキスト 説明
    (アイコンなし) (テキストなし) このオブジェクトのアタッチ操作が開始されていないか、保留されています。 これは、ダイアログ ボックスを開いたときの既定の状態です。
    緑の右向き三角形 進行中 アタッチ操作が開始されましたが、完了していません。
    緑のチェック マーク 成功 オブジェクトは正常にアタッチされました。
    赤い丸の中に白い×印 エラー アタッチ操作でエラーが発生し、正常に完了しませんでした。
    2つの黒い象限(左右)と2つの白い象限(上下)を含む円 Stopped ユーザーがアタッチ操作を停止したため、正常に完了しませんでした。
    丸の中に反時計回りの矢印 [ロールバックされました] アタッチ操作は正常に完了しましたが、他のオブジェクトのアタッチ中にエラーが発生したため、ロールバックされました。

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

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

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

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

    Note

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

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

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

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

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

Transact-SQL の使用

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

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

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

  3. CREATE DATABASE ステートメントを使用して、FOR ATTACHを閉じます。

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

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

    Note

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

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

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

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

参照

CREATE DATABASE (SQL Server Transact-SQL)
データベースのデタッチ