バックアップファイルからのレストア
レストア先のデータベースを確認する
レストア先のデータベースが存在する場合はデータベースを確認する
use sampledb;
select * from sys.database_files;
まだ作成前なら設定とかからファイル作成場所のデフォルトを探す。(var/opt/mssql/data/
など)
バックアップファイルを確認する
restore filelistonly
from disk = '/init/AdventureWorks2022.bak'
| LogicalName | PhysicalName |... |...|
|--------------------------|----------------------------------------------------------------------------------------------------------------------|------|--------------|
| AdventureWorks2022 | C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022.mdf | D | PRIMARY |
| AdventureWorks2022_log | C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_log.ldf | L | NULL |
PhysicalName が違っていたりするとレストアが失敗するかもしれないのでチェック。
レストア実行
restore database AdventureWorks
from disk = '/init/AdventureWorks2022.bak'
with
move 'AdventureWorks2022' to '/var/opt/mssql/data/MyDatabase.mdf',
move 'AdventureWorks2022_log' to '/var/opt/mssql/data/MyDatabase.ldf',
replace;
PhysicalName が違う場合moveで移動する。バックアップから新しいデータベースを作るなら、database名を変えたりすればいい。
SSMS つかわないの?
SSMSのタスク>復元>データベース から各種プロパティを設定すればちゃんとレストアできるけど、プロパティページが何ページもあって全部確認してからとかめんどくさい。年1回ならまだ我慢するけど、それのスクリーンショットとってエビデンス取れとかいう話になったらやってられない