SQL Server - デタッチ&アタッチでデータベースを移動する方法
SQL Server のデータベースを移動させたい
SQL Server の データベースを、同じサーバー内の他のインスタンスや、別のサーバーに移動させたい時ありますよね。
バックアップ&リストアでもデータベースをコピーすることができますが、今回はデタッチ&アタッチでデータベースを移動する方法をご紹介します。
ALTER DATABASE を使ってデータベースファイルの保存場所を変更する方法はこちらです。
SQL Server - ログファイルの保存場所を変更する方法
デタッチ&アタッチでデータベースを移動する
今回はデフォルトインスタンスにある TestDB というデータベースを、同じサーバー内の名前付きインスタンスに移動させてみましょう。
1. まず、でタッチしたいデータベースを選択して右クリックし、[タスク] > [デタッチ] をクリックします。
デタッチの画面が出てきます。 アクティブなコネクションがあるとデタッチできないので、メッセージにアクティブな接続出てきた場合は [接続の削除] をチェックして接続を切断するようにして [OK] をクリックします。
オブジェクトエクスプローラのデータベースから TestDB が消えました。 消えない場合はリフレッシュボタンをクリックしてみてください。
2. TestDB のデータベースファイル (mdf) とログファイル (ldf) を移動します。
3. 移動先のインスタンスで [データベース] を選択し、右クリックで [アタッチ] を選択します。
アタッチの画面が出てくるので、[追加] をクリックして、データベースファイル (mdf)を選択し、[OK] をクリックします。
そうすると、自動的にログファイル (ldf)も選択されるので、[OK] をクリックします。
ここで、SQL Server のサービスアカウントがデータベースファイルにアクセスする権限がない時に以下のようなオペレーティング システム エラー 5: "5(Access is denied.)" が出る可能性があります。
そんな時は SQL Server のサービスアカウントを SQL Server 構成マネージャー等で確認して、データベースファイル (mdf) とログファイル (ldf)にアクセス権限を追加してください。
アクセス権限を追加した後で再度 [OK] ボタンをクリックすると、TempDB がアタッチされました。