はじめに
SQL Server メンテナンスプランを使って、バックアップなどの DB 本番運用スケジュールを設定する備忘録です。
警告
メンテナンスプランはオンプレ版 SQL Server のみ可能のようです。
環境
- SQL Server 2025 Enterprise Developer
- SQL Server Management Studio (SSMS) 22
本番運用スケジュール
対象データベースの復旧モデルが「完全」の場合を想定しています。各タスクの処理時間はあくまで目安です。
日次(毎日深夜 1 時実行)
- 完全バックアップ
- 古い完全バックアップ (.bak) の削除 (7 日分保持)
- 古いトランザクションログバックアップ (.trn) の削除 (7 日分保持)
- メンテナンスプランテキストレポート (.txt) の削除 (7 日分保持)
- 履歴クリーンアップ ... システム DB (msdb) の履歴が削除される (1 ヶ月分保持)
- 古いレコードの削除 ... ストアドプロシージャで行う (削除条件はユーザー設定)
週次(毎週土曜日早朝 5 時実行)
- データベースの整合性確認 ... データの破損や不整合を検出できる
- インデックスの再構成 ... インデックスの断片化を整理できる
- データベース統計情報の更新 ... クエリプランが最適化される
30 分毎
- トランザクションログバックアップ
日次メンテナンスプランの作成
オブジェクトエクスプローラーから、メンテナンスプランを右クリックします。メニューから新しいメンテナンスプランを選択します。
日次なので「DailyMaintenancePlan」とします。
メンテナンスプランのデザイナー画面が表示されます。赤枠内のボタンをクリックして、ジョブスケジュールのプロパティを開きます。毎日 1 回、深夜 1 時に実行するスケジュールで設定します。
赤枠内のボタンをクリックして、レポートとログ記録の設定を行います。
次はジョブの内容(タスク)を設定していきます。SSMS 左側のツールボックスを開きます。※ツールボックスの初回表示時はロードに少しかかるかもです。
ドラッグアンドドロップでデザイナー画面にタスクを配置します。画像のように緑矢印を実行順に繋いでいきます。
次は各タスクの名前を分かりやすく変更していきます。タスクの右クリックメニューから名前を変更していきます。
今回はこんな感じにしました。
次は各タスクの内容を設定していきます。タスクの右クリックメニューから編集を選択、またはタスクをダブルクリックして編集画面を開きます。
完全バックアップタスクを設定します。
同じ要領で他のタスクも設定していきましょう。まずは古い完全バックアップの削除タスクを設定します。
古いトランザクションログバックアップの削除タスクを設定します。
メンテナンスプランテキストレポートの削除タスクを設定します。
履歴クリーンアップタスクを設定します。
古いレコードの削除タスクを設定します。delete_old_records というレコード削除用のストアドプロシージャを作成し、このタスクから叩くようにしています。実行タイムアウトは秒単位ですが 0 を設定した場合は特殊で、無制限待機になります。
最終的には以下のようになりました。ショートカットキーやタブの右クリックメニューなどから、忘れずに保存しておきましょう。
週次メンテナンスプランの作成
同じ要領で、週次メンテナンスプランも作成していきます。「WeeklyMaintenancePlan」という名前にします。
毎週土曜日、早朝 5 時に実行するスケジュールで設定します。
レポートとログ記録も設定します。
タスクの配置や名前は以下のようにします。
データベースの整合性確認タスクを設定します。
インデックスの再構成タスクを設定します。
データベース統計情報の更新タスクを設定します。
最終的には以下のようになりました。
30 分毎メンテナンスプランの作成
最後に 30 分毎メンテナンスプランも作成していきます。「HalfHourlyMaintenancePlan」という名前にします。
30 分毎に実行するスケジュールで設定します。
レポートとログ記録も設定します。
タスクの配置や名前は以下のようにします。1 つだけです。
トランザクションログバックアップタスクを設定します。
最終的には以下のようになりました。
動作確認
SQL Server エージェントのジョブを確認すると、今し方作成した各プランが自動登録されていることが確認できます。
各プランの右クリックメニューから直接実行できます。動作確認してみましょう。
成功したら、動作確認完了です。スケジュール設定が正しいかどうかは、実際に連続稼働させて検証してください。
おわりに
GUI ベースでも設定できるのは Microsoft って感じがして良いです。



