データベースのデタッチ

適用対象: SQL Server

この記事では、SQL Server Management Studio または Transact-SQL を使用し、SQL Server でデータベースをデタッチする方法について説明します。 デタッチされたファイルは削除されず、ファイル システム内に残ります。 ファイルは、CREATE DATABASE ... FOR ATTACH オプションまたは FOR ATTACH_REBUILD_LOG オプションを使用して再アタッチできます。 ファイルを別のサーバーに移動し、同じバージョンまたは新しいバージョンのインスタンスにアタッチすることもできます。

制限事項

制限事項と制約事項の一覧については、「データベースのデタッチとアタッチ (SQL Server)」を参照してくだい。

アクセス許可

db_owner 固定データベース ロール内でメンバーシップが必要です。

SQL Server Management Studio を使用します。

データベースを移動する前に

データベースを移動する場合は、その既存の SQL Server インスタンスからデタッチする前に、[データベースのプロパティ] ページを使用して、データベースに関連付けられているファイルとその現在の場所を確認します。

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

  2. [データベース]を展開し、デタッチするユーザー データベースの名前を選択します。

  3. データベース名を右クリックし、[プロパティ] を選択します。 [ファイル] ページ を選択し、[データベース ファイル:] テーブル のエントリを確認します。

デタッチ、移動、アタッチを行う前に、データベースに関連付けられているすべてのファイルを必ず考慮してください。 その後、次のセクションのデタッチの手順に進みます。 新しい場所でのデータベースのアタッチの詳細については、「データベースのアタッチ」を参照してください。

データベースのデタッチ

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

  2. [データベース]を展開し、デタッチするユーザー データベースの名前を選択します。

  3. データベース名を右クリックして [タスク] をポイントし、[デタッチ] を選択します。 [データベースのデタッチ] ダイアログ ボックスが表示されます。

    • [デタッチするデータベース]: デタッチするデータベースを一覧表示します。

    • データベース名: デタッチするデータベースの名前を表示します。

    • 接続の切断: 指定したデータベースへの接続を切断します。

      Note

      アクティブな接続があるデータベースをデタッチすることはできません。

    • 統計の更新: 既定では、データベースをデタッチしても、古い最適化統計情報が保持されます。既存の最適化統計情報を更新するには、このチェック ボックスをオンにします。

    • フルテキスト カタログの保持: 既定では、デタッチ操作を行っても、データベースに関連付けられたフルテキスト カタログが保持されます。 これらのカタログを削除するには、 [フルテキスト カタログの保持] チェック ボックスをオフにします。 このオプションは、SQL Server 2005 (9.x) からデータベースをアップグレードする場合にのみ表示されます。

    • ステータス: [準備完了] または [準備ができていません] のどちらかの状態を表示します。

    • メッセージ: [メッセージ] 列に、次のようにデータベースに関する情報が表示される場合があります:

      • データベースがレプリケーションに含まれている場合、 [状態][準備ができていません] になり、 [メッセージ] 列に [データベースがレプリケートされました]と表示されます。

      • データベースに 1 つまたは複数のアクティブな接続がある場合、[状態][準備ができていません] で、[メッセージ] 列に <[> のアクティブな接続] が表示されます。 たとえば、[1 のアクティブな接続] と表示されます。 データベースをデタッチする前に、[接続の削除] を選択して、アクティブな接続を切断する必要があります。

      メッセージについてより詳しい情報を得るには、ハイパーリンクのテキストを選択して、利用状況モニターを開きます。

  4. データベースをデタッチする準備ができたら、[OK] を選択します。

Note

新たにデタッチしたデータベースは、表示を最新の情報に更新するまで、オブジェクト エクスプローラーの [データベース] ノード内に表示されたままです。 ビューの更新はいつでも実行できます: [オブジェクト エクスプローラー] ウィンドウを選択し、メニューバーから [表示][更新] の順で選択します。

Transact-SQL の使用

データベースを移動する前に

データベースを移動する場合は、その既存の SQL Server インスタンスからデタッチする前に、sys.database_files システム カタログ ビューを使用して、データベースに関連付けられているファイルとその現在の場所を確認します。 詳しくは「sys.database_files (Transact-SQL)」をご覧ください。

  1. SQL Server Management Studio で、[新しいクエリ] を選択してクエリ エディターを開きます。

  2. 次の Transact-SQL スクリプトをクエリ エディターにコピーして、[実行] を選択します。 このスクリプトによって、物理データベース ファイルの場所が表示されます。 デタッチ/アタッチを介してデータベースを移動するときは、必ずすべてのファイルを考慮してください。

    USE [database_name]
    GO
    
    SELECT type_desc, name, physical_name
    FROM sys.database_files;
    

デタッチ、移動、アタッチを行う前に、データベースに関連付けられているすべてのファイルを必ず考慮してください。 その後、次のセクションのデタッチの手順に進みます。 新しい場所でのデータベースのアタッチの詳細については、「データベースのアタッチ」を参照してください。

データベースのデタッチ

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

  2. 標準バーから、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、AdventureWorks2022 オプションを skipchecks に設定して、true データベースをデタッチします。 詳細については、「sp_detach_db」を参照してください。

    EXEC sp_detach_db 'AdventureWorks2022', 'true';