SQLServerExpressでタスクスケジューラーを使ったバックアップ方法

SQLServerExpressでのバックアップは多少テクニックを弄する必要があるっぽい。

なっちゃんのプログラミングTips: SQLServer Express版の自動バックアップ

基本的にはこのサイトの通りで、これに曜日ごとのバックアップを作るようにしてみた。

最新のバックアップと曜日ごとのバックアップを別立てにして、最新のバックアップは常にファイルサーバーに保存。
曜日ごとのバックアップは毎週日曜日に1週間分を保存する。

という運用を想定。

declare @target varchar(255)

--曜日ごとのバックアップセット
set @target = cast('C:\dbBackups\daily\TESTDATA.' as varchar) + cast(datepart(dw,getdate()) as varchar)+ '.bak'
BACKUP DATABASE TESTDATA TO DISK=@target WITH INIT

--最新のバックアップセット
BACKUP DATABASE TESTDATA TO DISK='C:\dbBackups\daily\TESTDATA.bak' WITH INIT

本来は最新のバックアップだけ取ってバッチファイルとかでコピーすべきなんだけど、データ量も多く無いし面倒だから2重でバックアップを取ることに。

あとはこれをsqlファイルとして保存、起動するバッチファイルを作ってタスクに登録するだけ。