2011/12/13

SQL Server Expressで定期バックアップ

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"

これをタスクで好きなタイミングに実行。
久々のバッチファイル。

0 件のコメント:

コメントを投稿