次の方法で共有


データベースの切り離しと再接続 (SQL Server)

データベースのデータ ファイルとトランザクション ログ ファイルをデタッチしてから、SQL Server の同じインスタンスまたは別のインスタンスに再アタッチできます。 データベースのデタッチとアタッチは、同じコンピューター上の SQL Server の別のインスタンスにデータベースを変更する場合や、データベースを移動する場合に便利です。

SQL Server のディスク上ストレージ形式は、64 ビット環境と 32 ビット環境で同じです。 そのため、アタッチは 32 ビット環境と 64 ビット環境で機能します。 ある環境で実行されているサーバー インスタンスからデタッチされたデータベースは、別の環境で実行されているサーバー インスタンスにアタッチできます。

安全

ファイル アクセス許可は、データベースのデタッチやアタッチなど、さまざまなデータベース操作中に設定されます。

重要

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

データベースのデタッチ

データベースをデタッチすると、SQL Server のインスタンスから削除されますが、データベースはデータ ファイルとトランザクション ログ ファイル内にそのまま残ります。 これらのファイルを使用して、データベースがデタッチされたサーバーを含め、SQL Server の任意のインスタンスにデータベースをアタッチできます。

次のいずれかに該当する場合は、データベースをデタッチできません。

  • データベースがレプリケートされ、発行されます。 レプリケートする場合は、データベースを発行解除する必要があります。 デタッチする前に、 sp_replicationdboptionを実行して発行を無効にする必要があります。

    sp_replicationdboptionを使用できない場合は、sp_removedbreplicationを実行してレプリケーションを削除できます。

  • データベース上にデータベース スナップショットが存在する。

    データベースをデタッチする前に、そのすべてのスナップショットを削除する必要があります。 詳細については、「データベース スナップショットの削除 (Transact-SQL)」を参照してください。

    データベース スナップショットをデタッチまたはアタッチすることはできません。

  • データベースは、データベース ミラーリング セッションでミラー化されています。

    セッションが終了しない限り、データベースをデタッチすることはできません。 詳細については、「 データベース ミラーリングの削除 (SQL Server)」を参照してください。

  • データベースが疑わしい。 疑わしいデータベースをデタッチすることはできません。取り外す前に、緊急モードにする必要があります。 データベースを緊急モードにする方法の詳細については、 ALTER DATABASE (Transact-SQL) を参照してください。

  • データベースはシステム データベースです。

バックアップと復元とデタッチ

読み取り専用データベースをデタッチすると、差分バックアップの差分ベースに関する情報が失われます。 詳細については、「 差分バックアップ (SQL Server)」を参照してください。

デタッチ エラーへの対応

データベースのデタッチ中に生成されたエラーにより、データベースが正常に閉じられなくなり、トランザクション ログが再構築されるのを防ぐことができます。 エラー メッセージが表示された場合は、次の修正アクションを実行します。

  1. プライマリ ファイルだけでなく、データベースに関連付けられているすべてのファイルを再アタッチします。

  2. エラー メッセージの原因となった問題を解決します。

  3. データベースをもう一度デタッチします。

データベースの接続

コピーまたはデタッチされた SQL Server データベースをアタッチできます。 SQL Server 2014 サーバー インスタンスをアタッチすると、SQL Server 2005 と同じように、カタログ ファイルは以前の場所から他のデータベース ファイルと共にアタッチされます。 詳細については、「フルテキスト検索のアップグレード」を参照してください。

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

アタッチされているプライマリ データ ファイルが読み取り専用の場合、データベース エンジンはデータベースが読み取り専用であると見なします。

暗号化されたデータベースが最初に SQL Server のインスタンスにアタッチされている場合、データベース所有者は、OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' ステートメントを実行して、データベースのマスター キーを開く必要があります。 ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY のステートメントを実行して、マスター キーの自動復号化を有効にすることをお勧めします。 詳細については、 CREATE MASTER KEY (Transact-SQL)ALTER MASTER KEY (Transact-SQL) を参照してください。

ログ ファイルを添付するための要件は、次のように、データベースが読み取り/書き込みまたは読み取り専用かどうかによって部分的に異なります。

  • 読み取り/書き込みデータベースの場合、通常は新しい場所にログ ファイルを添付できます。 ただし、データベースを再アタッチするには、既存のログ ファイルが必要な場合があります。 データベースを正常にアタッチするまで、デタッチされたすべてのログファイルを常に保持することが重要ですが、アタッチの際にはそれらのファイルを使用しないことが重要です。

    読み取り/書き込みデータベースに 1 つのログ ファイルがあり、ログ ファイルの新しい場所を指定しない場合、アタッチ操作はファイルの古い場所を検索します。 見つかった場合は、データベースが正常にシャットダウンされたかどうかに関係なく、古いログ ファイルが使用されます。 ただし、古いログ ファイルが見つからず、データベースが正常にシャットダウンされ、アクティブなログ チェーンがない場合、アタッチ操作はデータベースの新しいログ ファイルの作成を試みます。

  • アタッチされているプライマリ データ ファイルが読み取り専用の場合、SQL Server はプライマリ ファイルに格納されているログの場所を更新できません。

データベースのアタッチに関するメタデータの変更

読み取り専用データベースがデタッチされてから再アタッチされると、現在の差分ベースに関するバックアップ情報が失われます。 差分ベースは、データベース内のすべてのデータ、またはデータベースのファイルまたはファイル グループのサブセット内のすべてのデータの最新の完全バックアップです。 ベース バックアップ情報がないと、 マスター データベースは読み取り専用データベースと同期されないため、その後に行われた差分バックアップによって予期しない結果が発生する可能性があります。 したがって、読み取り専用データベースで差分バックアップを使用している場合は、データベースを再アタッチした後に完全バックアップを実行して、新しい差分ベースを確立する必要があります。 差分バックアップの詳細については、「 差分バックアップ (SQL Server)」を参照してください。

アタッチ時に、データベースの起動が発生します。 通常、データベースをアタッチすると、デタッチまたはコピーされたときと同じ状態になります。 ただし、アタッチ操作とデタッチ操作の両方で、データベースのデータベース間の所有権チェーンが無効になります。 チェーンを有効にする方法については、「 クロス db 所有権チェーン サーバー構成オプション」を参照してください。 また、データベースが接続されるたびに TRUSTWORTHY が OFF に設定されます。 TRUSTWORTHY を ON に設定する方法については、 ALTER DATABASE (Transact-SQL) を参照してください。

バックアップと復元とアタッチ

完全または部分的にオフラインになっているデータベースと同様に、ファイルを復元するデータベースをアタッチすることはできません。 復元シーケンスを停止した場合は、データベースをアタッチできます。 その後、復元シーケンスを再起動できます。

データベースを別のサーバー インスタンスにアタッチする

重要

新しいバージョンの SQL Server で作成したデータベースは、それ以前のバージョンでアタッチすることはできません。

データベースを別のサーバー インスタンスにアタッチし、ユーザーとアプリケーションに一貫したエクスペリエンスを提供する場合は、他のサーバー インスタンスでデータベースのメタデータ (ログインやジョブなど) の一部またはすべてを再作成する必要がある場合があります。 詳細については、「データベースを別のサーバー インスタンスで使用できるようにするときのメタデータの管理 (SQL Server)」を参照してください。

関連タスク

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

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

デタッチ操作とアタッチ操作を使用してデータベースをアップグレードするには

デタッチ操作とアタッチ操作を使用してデータベースを移動するには

データベース スナップショットを削除するには

こちらもご覧ください

データベース ファイルとファイル グループ