SQLExpress 2008 バッチDB バックアップ でパックアップしたファイルを別の PC でリストアします。ここでは、MYDB というデータベースを MYDB.dat というファイルでバックアップしたものと考えます。 まず、MYDB.dat をどこに置いてもいいわけでは無く、ログインしているユーザがフルコントロールの権限を持つ場所に保存します。 その後内部の保存した時の情報を MYDB.dat の中から読み取る為に以下のSQL を sqlcmd で実行します。 sqlcmd -E -S .\SQLEXPRESS -i コマンドが書かれたL.txt ※ owner を sa にしたい場合は、-E では無く sa とパスワードで -U sa -P パスワード でログイン情報を使用します
RESTORE FILELISTONLY FROM DISK = 'C:\temp\MYDB.dat' go
情報として、保存した時の論理名と、物理パスの情報がセットで存在し、データとログと合わせて4つの情報が必要になります。通常、データベース名と論理名は一致しているものですが、そもそも複製データーベースだと論理名が違う場合があります。その場合は最後に論理名も変更しないとオリジナルと同じ構成にならないので注意して下さい これによって、元の情報が手に入るので、リストアする PC の環境を 『目的のDBが使用している物理ファイルのパスの確認 / SQLExpress 』で得たうえで以下のようなコマンドを作成して実行します ※ 必ずしもこのディレクトリ内に置く必要は無いはずですが、今回は管理上同じ場所へリストアします
RESTORE DATABASE MYDB FROM DISK = 'C:\temp\MYDB.dat' WITH MOVE 'MYDB' TO 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MYDB.mdf', MOVE 'MYDB_log' TO 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MYDB_log.LDF' go
これは、ファイル内の論理名を使って、現在の PC のどの場所にリストアするかを決めるものです。 ※ 削除する場合は、use master をしてから、drop database MYDB です。
タグ:SQLExpress DB