読者です 読者をやめる 読者になる 読者になる

よくかんでたべること

そのままのみこまずに、ね。

メモ:SQLServerで異なる名前のDBへのRestore

GUIツールが使えないお客さんのSQLServerで別DBを作って本番のバックアップをリストアしなくてはならなかった。
コマンドを覚えていなくて苦労したのでここに残しておく。

FROMDBのバックアップ

BACKUP DATABASE FROMDB TO DISK = 'バックアップのファイル名'
go

バックアップのLogicalNameとPhysicalNameを確認

RESTORE FILELISTONLY
FROM DISK='バックアップのファイル名'
go

論理DB、トランザクションログそれぞれのLogicalName,PhysicalName(\data\までのパス)がRestoreに必要となる。
PhysicalNameの\DATA\を開いて、
(うちのPCだとc:\Program Files\Microsoft SQL Server\MSSQL10_50.SERVER\MSSQL\DATA\)
DB名.mdf,DB名.ldfがペアになっていることを確認する。
SQLServerのバージョンによってldfの名前ルールが違うので注意して見ること。

リストア:移動先に注意!

RESTORE DATABASE TODB FROM DISK = ' 'バックアップのファイル名' WITH REPLACE,
move '論理DBPLogicalName' to '論理DBPhysicalNameの¥DATA¥までのパス\TODB.mdf',
move 'トランザクションログLogicalName' to 'トランザクションログPhysicalNameの¥DATA¥までのパス\TODB.ldf'
go

注意すべきはmoveする先のto の中身。
さきほど見たRESTORE FILELISTONLY はFROMDBのPhysicalNameなので、TODBのPhysicalNameを指定しなければならない。

[PhysicalName(\data\までのパス)と、DB名.mdf or DB名.ldf]

SQLServerのバージョンで名前ルールが異なるようだ。論理DBのLogicalNameは関してはTODB_datとかTODB_Dataとなっている。
また、トランザクションログPhysicalNameの.ldfに関してはTODB.ldf,TODB_log.ldfと変わるので気をつけること。