SSMSを使ってウィザードを開き、ポチポチとしてバックアップを取ったり復元したりするのが面倒なので、クエリを書いてバックアップと復元を行う。
今回は、SQL Server 2016での動作です。
データベースをバックアップ
USE master
GO
BACKUP DATABASE データベース名
TO DISK = 'バックアップする場所\名前.bak'
WITH INIT
, COMPRESSION
タイムスタンプも付けてもう少し楽に流せるようにする。
DECLARE
@WK_NOW datetime
, @WK_PATH varchar(max)
, @WK_NAME varchar(max)
BEGIN
SET @WK_NOW = GETDATE()
SET @WK_NAME = 'データベース名'
SET @WK_PATH = 'D:\BACKUP\' + @WK_NAME + '_' + CONVERT(varchar, @WK_NOW, 112) + REPLACE(CONVERT(varchar, @WK_NOW, 114), ':', '') + '.BAK'
BACKUP DATABASE データベース名
TO DISK = @WK_PATH
WITH INIT
, COMPRESSION
END
論理名(LogicalName)の確認
RESTORE FILELISTONLY
FROM DISK='場所/名前.bak'
GO
データベースの復元
RESTORE DATABASE データベース名
FROM DISK = '場所\名前.bak'
WITH MOVE 'MDFの論理名' TO '場所/名前.MDF'
,MOVE 'LDFの論理名' TO '場所/名前.LDF'
論理名(LogicalName)を間違えると
メッセージ 3234、レベル 16、状態 2、行 16
論理ファイル '△△△' はデータベース '○○○○' の一部ではありません。RESTORE FILELISTONLY を使用して、論理ファイル名を表示してください。
メッセージ 3013、レベル 16、状態 1、行 16
RESTORE DATABASE が異常終了しています。
上記のようなエラーがでます。