SQL Server - デタッチ&アタッチでデータベースを移動する方法

SQL Server のデータベースを移動させたい

SQL Server の データベースを、同じサーバー内の他のインスタンスや、別のサーバーに移動させたい時ありますよね。

バックアップ&リストアでもデータベースをコピーすることができますが、今回はデタッチ&アタッチでデータベースを移動する方法をご紹介します。

同じインスタンス内でデータベースファイルの保存場所を変更したい時に、デタッチ&アタッチでもできなくはないのですが、マイクロソフトは ALTER DATABASE を使う方法を推奨しています。

ALTER DATABASE を使ってデータベースファイルの保存場所を変更する方法はこちらです。
SQL Server - ログファイルの保存場所を変更する方法

デタッチ&アタッチでデータベースを移動する

今回はデフォルトインスタンスにある TestDB というデータベースを、同じサーバー内の名前付きインスタンスに移動させてみましょう。

デタッチ&アタッチでデータベースを移動する方法 1


1. まず、でタッチしたいデータベースを選択して右クリックし、[タスク] > [デタッチ] をクリックします。

デタッチ&アタッチでデータベースを移動する方法 2

デタッチの画面が出てきます。 アクティブなコネクションがあるとデタッチできないので、メッセージにアクティブな接続出てきた場合は [接続の削除] をチェックして接続を切断するようにして [OK] をクリックします。

デタッチ&アタッチでデータベースを移動する方法 3

オブジェクトエクスプローラのデータベースから TestDB が消えました。 消えない場合はリフレッシュボタンをクリックしてみてください。

デタッチ&アタッチでデータベースを移動する方法 4


2. TestDB のデータベースファイル (mdf) とログファイル (ldf) を移動します。

デタッチ&アタッチでデータベースを移動する方法 5


3. 移動先のインスタンスで [データベース] を選択し、右クリックで [アタッチ] を選択します。

デタッチ&アタッチでデータベースを移動する方法 6

アタッチの画面が出てくるので、[追加] をクリックして、データベースファイル (mdf)を選択し、[OK] をクリックします。

デタッチ&アタッチでデータベースを移動する方法 7

デタッチ&アタッチでデータベースを移動する方法 8

そうすると、自動的にログファイル (ldf)も選択されるので、[OK] をクリックします。

デタッチ&アタッチでデータベースを移動する方法 9

ログファイル (ldf)がない場合、データベースファイル (mdf) だけ指定してもアタッチ可能です。 その場合はアタッチした時に ldf ファイルが生成されます。

ここで、SQL Server のサービスアカウントがデータベースファイルにアクセスする権限がない時に以下のようなオペレーティング システム エラー 5: "5(Access is denied.)" が出る可能性があります。

デタッチ&アタッチでデータベースを移動する方法 10

そんな時は SQL Server のサービスアカウントを SQL Server 構成マネージャー等で確認して、データベースファイル (mdf) とログファイル (ldf)にアクセス権限を追加してください。

デタッチ&アタッチでデータベースを移動する方法 11

デタッチ&アタッチでデータベースを移動する方法 12

アクセス権限を追加した後で再度 [OK] ボタンをクリックすると、TempDB がアタッチされました。

デタッチ&アタッチでデータベースを移動する方法 13

© 2010-2024 SQL Server 入門