NEWSニュース&ブログ

【SQL Server】メンテナンスプランを使ってみた

この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。

投稿日:2023/11/2

はじめに

SQL Serverのメンテナンスプランという機能を使用することで、任意のデータベースのバックアップを取得したり、バックアップファイルの世代管理を行うことができます。
バックアップを定期的に取得することは、データ損失を防ぐために非常に重要です。ハードウェア障害、データ破損、ユーザーエラーなど、予期せぬ問題が発生した場合、バックアップからデータを復元することができます。また、バックアップはデータの履歴を保持するためにも使用されます。
今回はメンテナンスプランを使って、バックアップの取得とバックアップファイルの世代管理を実現したいと思います。

バックアップの種類

メンテナンスプランで選択できるバックアップの種類について簡単に説明します。

完全バックアップ
 データベースのすべてのデータファイル、ログファイルが含まれています。
 完全バックアップを使用してリストアすることで、バックアップが開始した時点のデータベースに復元することができます。

差分バックアップ
 直近に取得した完全バックアップからの変更部分のみが含まれます。
 リストアする際は、完全バックアップをリストアした後に差分バックアップをリストアするといった手順となります。

トランザクションログバックアップ
 直近に取得したトランザクションログバックアップ以降のトランザクションログを含みます。

 リストアする際は、完全もしくは完全+差分をリストアした後にリストアするといった手順となります。

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

それでは、今回は以下のメンテナンスプランを作成したいと思います。

①毎週月曜日に完全バックアップを取得
②完全バックアップファイルは7世代保持とする

まずは、SSMSからメンテナンスプランウィザードを開きましょう。
 
ウィザードが開いたら、名前には「週次バックアップ」、説明にはメンテナンスプランの内容を入力します。

次にスケジュールの設定を行います。
スケジュールの[変更]をクリックします。

Frequency(頻度)では、毎週月曜日の設定とします。
Daily Frequency(毎日の頻度)では、上記で設定した曜日の何時にメンテナンスプランを実行するか設定します。今回は深夜帯での実行を想定し、0:00:00とします。
Durationでは開始日と終了日を入力します。

メンテナンスプランの名前や説明、スケジュールの設定を確認し、次に進みます。

メンテナンスタスクの選択が表示されます。
メンテナンスプランではバックアップの取得やファイルのクリーンアップ以外にも様々なメンテナンスタスクが用意されています。

今回は、
①データベースの整合性確認
②データベースのバックアップ(完全)
③メンテナンスクリーンアップタスク
の順序で選択します。

①データベースの整合性確認の設定を行います。
今回はシステムデータベース以外のデータベースを対象とします。

整合性の内容を選択できますが、デフォルト設定で次に進みます。
整合性確認の詳細はこちらをご参照ください。

次に②データベースのバックアップ(完全)の設定です。
こちらも①と同様、システムデータベース以外のデータベースを対象とします。

バックアップファイルの出力先やデータベースごとにサブフォルダを作成することも可能です。

オプションではバックアップの圧縮を選択します。
バックアップの圧縮の効果と影響の検証結果はこちらを参考にしてください。

最後に③メンテナンスクリーンアップタスクの定義となります。
[次の種類のファイルを削除]はバックアップファイル、[フォルダーを検索し、拡張子に基づいてファイルを削除する]では、削除対象のパスと拡張子を入力し、直下のサブフォルダーを含めるにチェックを入れてください。
[タスク実行時にファイルの経過時間に基づいてファイルを削除する]は1週とします。



全ての設定が終わりました。
最後にメンテナンスプランの結果を出力するレポートをどのフォルダに書き込むか指定する画面となりますが、今回は特に不要なのでチェックは外します。


これでメンテナンスプランの作成は終了です。
設定した情報を確認する際は、[管理] > [メンテナンスプラン] > [メンテナンスプラン名] を右クリック > [変更]からGUIベースで確認することができます。

メンテナンスプランの使用

作成したメンテナンスプランを実際に使ってみましょう。
確認ポイントは以下2点です。

①メンテナンスプランの手動実行でバックアップファイルが作成されていること
②既存のバックアップファイルが7世代保持されること

特に②を確認するために、以下のbakファイルを用意しました。

それでは、メンテナンスプランを手動実行します。

正常終了しました。
SQL Server ジョブの履歴からも正常終了しているようです。

バックアップファイルフォルダの状態を確認すると、バックアップが作成されており、バックアップファイルの7世代保持も守られていますね。

検証結果

今回はSQL Serverのメンテナンスプランの検証を行いました。
バックアップとバックアップファイルのクリーンアップを組み合わせましたが、他にも統計情報の更新やインデックスの再構成・再構築も設定できます。
設定もGUIベースで簡単に行えるので、使い勝手も良さそうですね。

中川 智文(2022年入社)
株式会社システムサポート フューチャーイノベーション事業本部 ソリューションサービス事業部所属
Oracle Database,SQL Serverを中心とした案件に従事