メンテナンスプランとジョブの関係

メンテナンスプラン(管理)とジョブ(SQL Server エージェント)の違いとか関係性とかがなんかごっちゃになって混乱したので、簡単に整理してまとめてみます。

メンテナンスプラン

データベースメンテナンスワークフローの作成・管理の機能。

メンテナンスプランのツールボックスメンテナンスプランで実行できるフローは、SQL Serverデータベースメンテナンスのためのもののみ、という感じです(ツールボックスを見るとわかります)。

メンテナンスプランを作成すると、それを実行するためのSQL Server Integration Services パッケージ(SSISパッケージ)が作成されます。
サブプラン作成時には、そのSSISを実行するためのSQL Server エージェントジョブが作成されます。このジョブの中身は、単にSSISパッケージを実行します、という設定になっています。

SQL Server エージェントジョブ

ジョブのプロパティ

任意のバッチ的処理を定義するもので、それをスケジュール実行する機能でもあります。

実行したい複数の処理を「ステップ」として登録して、バッチ的処理を定義することができます。いわばこれが「ジョブ」。で、そのジョブそれぞれにスケジュールを設定することができる、という感じです。

多少ややこしいですが、ここで作ったジョブをメンテナンスプランのフローの一つとして利用することができます。
これは、メンテナンスプランでは定義できないフローを、メンテナンスプランに入れ込むために使用できます。
例えばバッチファイルの実行はメンテナンスプランのフローに直接書くことはできませんが、いったんそのバッチファイル実行を行うジョブを作成して、そのジョブを実行するフローをメンテナンスプランに追加することで、メンテナンスプランの一部としてバッチファイル実行を行うことができるようになります。

参考資料

http://msdn.microsoft.com/ja-jp/library/ms140028.aspx
http://msdn.microsoft.com/ja-jp/library/ms189237(v=sql.105).aspx

余談

メンテナンスプランを作成すると(ほぼ確実に)ジョブが作成されるけれど、その一方、メンテナンスプランでジョブを実行できるっていうことで、メンテナンスプランとジョブって何がどう違ってどういう関係なの?と混乱してしまったのでした。

version: SQL Server 2008R2

コメントを残す