Elastic Pool を触ってみるの最後として、ジョブを触ってみたいと思います。
Elastic Scale for Microsoft Azure SQL Database からの抜粋ですが、Elastic Database Jobs の概略としては以下のようになります。
Elastic Database Job は Elastic Database Pool に含まれているデータベースを管理する用途で使用できる機能となっています。
Elastic database jobs overview でドキュメントが公開されていますので、詳細についてはこちらを確認いただくとよいかと思います。
Elastic Database Pool の出自としては、SaaS 開発におけるソリューションがあるかと思います。
# ドキュメントにも SaaS Developer solutions とあります。
複数のデータベースに対して T-SQL によるメンテナンスを実行するための機能が Elastic Scale Job になるかと。
- マスターメンテナンス
- データ最適化 (インデックス最適化 / 統計情報の最新化)
などを、T-SQL ベースで実行するためにジョブを使用することができます。
Elastic Database Job は、
- クラウドサービス
- 管理用の Azure SQL Database (S0)
- サービスバス
- Azure ストレージ
の 4 つの要素で構成されていますが、これは一つずつ作成する必要はなく、ポータルから作成することができます。
「Elastic Database Pool」の「Create job」をクリックすることで、既存のジョブ実行環境が存在していない場合には、作成をするためのブレードが表示されます。
ジョブはデータベースに対して、管理者権限で接続する必要がありますので、「Job credentials」としては、プール内の全データベースに接続が可能なログインを用意しておく必要がありますが、入力項目としてはこれだけです。
作成を行うと、Elastic Database Pool 用のリソースグループ「__ElasticDatabaseJob」が作成され、その中に必要なサービスがまとめられます。
これで、Elastic Database Pool に対して T-SQL のジョブを実行することができます。
各リソースが作成されてから、管理用の Azure SQL Database に必要なテーブルが作成されるまでは少し時間がかかりますので、ジョブの実行環境のデプロイ後に処理中でジョブが作成できない場合のは、SQL Database をのぞいてみてもよいかと。
環境が整っていれば以下の用にテーブルが作成されている状態となります。
実行環境の準備が整うと「Create Job」から以下のような T-SQL を入力するためのブレードを表示することができます。
前回の投稿で使用していた CPU のテストを実行するための関数を Elastic Database Pool の全データベースで実行するようにしたい場合には、以下のような関数を作成するためのジョブを設定します。
各データベースによって作成 / 未作成の状況が変わる可能性がある場合には、一度削除して再作成についても考慮をしておく必要があります。
それでは作成したジョブを実行してみたいと思います。
ジョブを実行すると、進捗状況が表示され、どのデータベースに対して処理が成功しているかの状況を確認することができます。
現状はジョブは編集ができない / スケジュール実行ができない / T-SQL に限定されるとなっていそうですが、管理用のクエリを SSMS で 1 DB ずつ実行するよりは楽かと。
管理用のテーブルを見ると、いろいろなテーブルがありますので、今後の機能拡張が期待できるかもしれないですね。