変更要約: DP-300 第4章を深掘り(図ja化・比較表/シナリオ/FAQ/ひっかけ/深掘り段落を全節に追加)
4.1ジョブによるタスクの自動化
定型運用を自動化する手段——SQL Server Agent(VM/Managed Instance)・Elastic Jobs(Azure SQL Database・複数 DB 横断)・Azure Automation——を理解します。デプロイ先によって使う仕組みが変わります。
バックアップ確認・統計更新・インデックス再構成などの定型作業は自動化します。ただしデプロイ先(SQL Database か MI/VM か)で使える仕組みが異なります。
4.1.1自動化の手段
- SQL Server Agent:VM / Managed Instance で使えるジョブスケジューラ(ジョブ・スケジュール・通知)。
- Elastic Jobs:Azure SQL Database には SQL Agent が無いため、複数 DB 横断でジョブを実行する。
- Azure Automation:Runbook(PowerShell など)で Azure 全体の運用を自動化する。
- 典型タスク:統計更新・インデックス再構成・整合性チェック・バックアップ確認など。
「VM/MI のジョブ自動化=SQL Server Agent」「Azure SQL Database には SQL Agent が無い→Elastic Jobs」「複数 DB 横断のスケジュール実行=Elastic Jobs」「Azure 全体の運用自動化=Azure Automation」 は DP-300 で頻出です。デプロイ先で選択が変わる点が要注意です。
Managed Instance は SQL Agent を持つため、オンプレの Agent ジョブをほぼそのまま移行できます。SQL Database への移行では Elastic Jobs への置き換えが必要です。
SQL Server Agent は ジョブ(複数 ステップ からなる)・スケジュール・アラート・オペレーター(通知先) で構成し、T-SQL や PowerShell、SSIS パッケージを実行します(VM/MI で利用可、SQL Database には無い)。Elastic Jobs は ジョブエージェント+専用の ジョブデータベース を持ち、対象を ターゲットグループ(サーバー/プール/個別 DB)で束ねて T-SQL を複数 DB に並列実行でき、統計更新やスキーマ展開を全社の DB に一括適用するのに向きます。Azure Automation は Runbook(PowerShell/Python)と スケジュール・ハイブリッド Runbook ワーカー でクラウド/オンプレ横断の運用(スケール変更・バックアップ検証・夜間メンテ)を自動化。Logic Apps はノーコードのワークフローで通知や承認フローを組めます。定型 DB タスク(統計更新・インデックス再構成・整合性チェック DBCC CHECKDB・古いバックアップ削除)をスケジュール化し、失敗時はオペレーター/アクショングループへ通知するのが定石です。
| 手段 | 使えるデプロイ | 得意 |
|---|---|---|
| SQL Server Agent | VM / Managed Instance | インスタンス内のジョブ/通知 |
| Elastic Jobs | Azure SQL Database | 複数 DB 横断の並列実行 |
| Azure Automation | Azure 全体(ハイブリッド可) | Runbook での広域運用 |
シナリオ: 100 個の Azure SQL Database に毎晩、統計更新と古いログ削除の T-SQL を一括実行したい。→ SQL Database には SQL Agent が無いので Elastic Jobs を使い、ターゲットグループに対象 DB を束ねてスケジュール実行します。スケール変更など Azure 全体の運用は Azure Automation の Runbook で補完します。
FAQ: Q. Azure SQL Database で SQL Agent ジョブを作れますか? → A. いいえ。SQL Database に SQL Agent はなく、複数 DB 横断の自動化は Elastic Jobs を使います。Q. Elastic Jobs と Azure Automation の違いは? → A. 前者は DB に対する T-SQL の並列実行に特化、後者は Runbook で Azure 全体の運用を広く自動化します。
ひっかけ: 「Azure SQL Database でも SQL Server Agent でジョブをスケジュールできる」は誤りです。SQL Database に SQL Agent は無く、Elastic Jobs を使います。SQL Agent が使えるのは VM / Managed Instance。デプロイ先で選択が変わる点が頻出のひっかけです。
4.1.2この節のまとめ
- VM/MI=SQL Server Agent、SQL Database=Elastic Jobs
- Azure 全体=Azure Automation(Runbook)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. SQL Server on VM や Managed Instance でジョブをスケジュール実行する標準の仕組みはどれですか?
Q2. Azure SQL Database には SQL Agent が無い。複数 DB 横断でジョブをスケジュール実行したい場合は何を使いますか?
Q3. PowerShell などの Runbook で Azure 全体の運用作業を自動化する Azure のサービスはどれですか?

