SQL Server (今回は2008 R2) で定期的にバックアップ取りたい時、
Standardならメンテナンス・プランとかいう機能が付いてるらしいが、Expressにはそんないいもんない!
なので、バッチファイルとwindowsタスクで対応。
バッチファイルの中身。
@ECHO OFF
set dt=%date:~-10%
set tm=%time: =0%
set fname=%dt:~0,4%%dt:~5,2%%dt:~8,2%-%tm:~0,2%%tm:~3,2%%tm:~6,2%.bak
set fpath=C:\Program Files\Microsoft SQL Server\MSSQL10_50.NDB1\MSSQL\Backup\
::古いファイルを削除(最新7個のみ残す)
cd %fpath%
for /f "skip=7" %%A in ('dir /b/o-d "%fpath%"') do @del /q %%A
::ログインしてバックアップ
sqlcmd -S (local) -U sa -P pass -d dbname -Q "BACKUP DATABASE [dbname] TO DISK = N'%fpath%%fname%' WITH NOFORMAT, NOINIT, NAME = N'dbname-完全 データベース バックアップ', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
これをタスクで好きなタイミングに実行。
久々のバッチファイル。