SQL Server 2005のバックアップ&復元を使ってデータベースをコピーする

状況:2台のPCでSQL Serverが稼働中。一方のデータベースを丸ごともう一方にコピーしたい。

概要:一方でデータベースをバックアップし、そのファイルをもう一方に転送してリストアする。

手順:

MS SQL Server Management Studio(以下MSSMSと略)にて。

コピー元とコピー先のデータベースをsaアカウントで接続する。(うちの環境ではWindows認証不可のため)

MSSMSのオブジェクトエクスプローラでコピー元のデータベースを選び、管理を右クリックし「バックアップ」を選ぶ。

ソースのデータベースを選択し、バックアップの種類は「完全」とする。

バックアップ先のファイル名をメモ。

OKを押してバックアップする。

先ほどメモしたバックアップファイルをコピー先のPCに転送する。

MSSMSのオブジェクトエクスプローラでコピー先のデータベースを選び、データベースを右クリックし「データベースの復元」を選ぶ。

復元先データベースを入力or選択する。

復元用のソースを「デバイス」として参照ボタン(…)を押し、バックアップの場所の追加ボタンを押して、先ほど転送したバックアップファイルを指定する。

ページの選択で「オプション」を選び、復元オプションで「既存のデータベースを上書きする」を選ぶ。

OKを押してリストアする。

データのインポート/エクスポートウィザードではインデックスやストアドプロシージャなどがコピーできなかったので上記の方法を採用した。

きっと他にもっとスマートな方法があるはず。

補足1

どうもセキュリティ関係はそのまま引き継げないようで、ログインできなくなってしまった。仕方ないのでコピーしたデータベースのユーザーを一旦削除し、ログインのユーザーマッピングを設定しなおしてユーザーを再生成したらログインできるようになった。

また、ストアドプロシージャの権限もユーザーを追加してExecute属性を設定しなければならない。