SQL SERVER2016 Exressでは、
メンテナンスプランによる自動バックアップ機能がありません。
それもでやはりバックアップは自動的に取得しておきたいでしょう。
Windowsのタスクスケジューラを使用して定期自動バックアップの方法を紹介したいと思います。
確認環境
OS:Windows10 64bit
DB:Sql Server2016
Microsoft SQL Server Management Studio :14.0
確認環境
①以下2つのファイルをメモ帳に貼り付け、Dドライブに保存する
注意1 Fドライブが他で使用されている場合は他のドライブにして下さい
注意2 拡張子に注意。メモ帳で保存すると拡張子がtxtになりがちです
【ファイル名】SqlServerBackUp.sql
【内容】SQLServerをバックアップするためのSQLファイル
BACKUP DATABASE [データベース名]
TO DISK = N'D:\backup.bak'
WITH FORMAT,
NAME = N'データベースバックアップ名',
STATS = 10
【ファイル名】SQLServerBackUp.bat
【内容】SqlServerBackUp.sqlを実行するバッチファイル
※ 赤文字は任意で変更下さい。
REM バックアップをNRドライブに保存する
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set time2=%time: =0%
set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%
set executeDateTime=%yyyy%-%mm%-%dd%-%hh%-%mn%-%ss%
echo %executeDateTime% >> backup.log
set backuppath=F:\
set filename=DB_%executeDateTime%.bak
set lotateLogPath=D:\REM バックアップ先ネットワークドライブの設定
net use /delete F:
net use f: \\IPアドレス\aaa$ パスワード /user:ユーザ名REM SQLServerのバックアップコマンド実行
sqlcmd -S localhost -U ユーザ名 -P パスワード -i SqlServerBackUp.sql >> backup.log
move backup.bak %backuppath%%filename%REM ローテーション
cd /d %backuppath%REM 7日以上前のファイル削除
forfiles /d -7 /c "cmd /c del @file >> %lotateLogPath%logrotate_log.txtREM Fドライブ削除
net use /y /delete F:
【バックアップコマンドオプション詳細】
・NAME = N'データベースバックアップ名'
バックアップ名。バックアップファイル名ではない
バックアップファイル確認コマンド実行時にわかる
・STATS = 10
バックアップ状況の表示。10%ずつ表示する
・FORMAT
複数世代管理ではなく、常に最新のものが1つだけ
・NOFORMAT
複数世代管理
※ 同じ意味合いのオプションとしてINIT(NOINIT)がある。
SQLServer のバックアップは、1バックアップファイルに複数バックアップを入れることが可能です。INIT(NOINIT)とFORMATは同時に指定はできないです。
③タスクスケジューラを起動する
(Windowsキー + Eキーを押して、「taskschd.msc」を入力してENTERキーを押す)
④「基本タスクの作成」をクリックする
⑤タスク名を入力する
⑥バックアップ頻度を設定する
⑦実行日時と実行間隔を設定する
⑧「プログラムの開始」を選択する
⑨作成したBatファイルを指定する
⑩タスク内容を確認して完了を押す
⑪タスクが作成されているのを確認する
タスクの確認
指定時間を待ってもいいですが、テストのためにすぐに実行も可能です。
作成したタスクの上で右クリックする
これでバックアップができているのではないでしょうか。