Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

SSMS 22 メンテナンスプランで DB 本番運用スケジュールを設定する

0
Posted at

はじめに

SQL Server メンテナンスプランを使って、バックアップなどの DB 本番運用スケジュールを設定する備忘録です。

警告
メンテナンスプランはオンプレ版 SQL Server のみ可能のようです。

環境

  • SQL Server 2025 Enterprise Developer

補足
メンテナンスプランは SQL Server エージェントのジョブとして実行されるため、エージェントサービスの起動が必要です。サービスから「スタートアップの種類」を「自動」、状態を「実行中」にしておきましょう。

また Integration Services 機能も必要です。ない場合は SQL Server インストールセンターから既存のインストールに機能を追加しておきましょう。

  • SQL Server Management Studio (SSMS) 22

補足
SSMS 22 でメンテナンスプランを使うには、ビジネスインテリジェンスに含まれる SQL Server Integration Services (SSIS) が必要です。

本番運用スケジュール

対象データベースの復旧モデルが「完全」の場合を想定しています。各タスクの処理時間はあくまで目安です。

日次(毎日深夜 1 時実行)

  1. 完全バックアップ
  2. 古い完全バックアップ (.bak) の削除 (7 日分保持)
  3. 古いトランザクションログバックアップ (.trn) の削除 (7 日分保持)
  4. メンテナンスプランテキストレポート (.txt) の削除 (7 日分保持)
  5. 履歴クリーンアップ ... システム DB (msdb) の履歴が削除される (1 ヶ月分保持)
  6. 古いレコードの削除 ... ストアドプロシージャで行う (削除条件はユーザー設定)

週次(毎週土曜日早朝 5 時実行)

  1. データベースの整合性確認 ... データの破損や不整合を検出できる
  2. インデックスの再構成 ... インデックスの断片化を整理できる
  3. データベース統計情報の更新 ... クエリプランが最適化される

30 分毎

  1. トランザクションログバックアップ

日次メンテナンスプランの作成

オブジェクトエクスプローラーから、メンテナンスプランを右クリックします。メニューから新しいメンテナンスプランを選択します。

日次なので「DailyMaintenancePlan」とします。

メンテナンスプランのデザイナー画面が表示されます。赤枠内のボタンをクリックして、ジョブスケジュールのプロパティを開きます。毎日 1 回、深夜 1 時に実行するスケジュールで設定します。

赤枠内のボタンをクリックして、レポートとログ記録の設定を行います。

次はジョブの内容(タスク)を設定していきます。SSMS 左側のツールボックスを開きます。※ツールボックスの初回表示時はロードに少しかかるかもです。

ドラッグアンドドロップでデザイナー画面にタスクを配置します。画像のように緑矢印を実行順に繋いでいきます。

補足
各タスクの配置は上部メニューの形式 → 自動レイアウト → ダイアグラムから整形できます。

次は各タスクの名前を分かりやすく変更していきます。タスクの右クリックメニューから名前を変更していきます。

今回はこんな感じにしました。

次は各タスクの内容を設定していきます。タスクの右クリックメニューから編集を選択、またはタスクをダブルクリックして編集画面を開きます。

完全バックアップタスクを設定します。

同じ要領で他のタスクも設定していきましょう。まずは古い完全バックアップの削除タスクを設定します。

古いトランザクションログバックアップの削除タスクを設定します。

メンテナンスプランテキストレポートの削除タスクを設定します。

履歴クリーンアップタスクを設定します。

古いレコードの削除タスクを設定します。delete_old_records というレコード削除用のストアドプロシージャを作成し、このタスクから叩くようにしています。実行タイムアウトは秒単位ですが 0 を設定した場合は特殊で、無制限待機になります。

最終的には以下のようになりました。ショートカットキーやタブの右クリックメニューなどから、忘れずに保存しておきましょう。

週次メンテナンスプランの作成

同じ要領で、週次メンテナンスプランも作成していきます。「WeeklyMaintenancePlan」という名前にします。

毎週土曜日、早朝 5 時に実行するスケジュールで設定します。

レポートとログ記録も設定します。

タスクの配置や名前は以下のようにします。

データベースの整合性確認タスクを設定します。

インデックスの再構成タスクを設定します。

データベース統計情報の更新タスクを設定します。

最終的には以下のようになりました。

30 分毎メンテナンスプランの作成

最後に 30 分毎メンテナンスプランも作成していきます。「HalfHourlyMaintenancePlan」という名前にします。

30 分毎に実行するスケジュールで設定します。

レポートとログ記録も設定します。

タスクの配置や名前は以下のようにします。1 つだけです。

トランザクションログバックアップタスクを設定します。

最終的には以下のようになりました。

動作確認

SQL Server エージェントのジョブを確認すると、今し方作成した各プランが自動登録されていることが確認できます。

各プランの右クリックメニューから直接実行できます。動作確認してみましょう。

成功したら、動作確認完了です。スケジュール設定が正しいかどうかは、実際に連続稼働させて検証してください。

おわりに

GUI ベースでも設定できるのは Microsoft って感じがして良いです。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?