Automation Runbook をデプロイして、インデックスを自動的に再構築する
推定所要時間:30 分
あなたは、データベース管理の日常業務自動化を支援するシニア データベース管理者として採用されました。 この自動化はピーク時のパフォーマンスで AdventureWorks のデータベースの稼働を確実に続けるうえで役に立つだけでなく、特定の条件に基づいてアラートを生成することもできるようにします。 AdventureWorks では、サービスとしてのインフラストラクチャ (IaaS) とサービスとしてのプラットフォーム (PaaS) の両方のオファリングで SQL Server を利用しています。
注: これらの演習では、T-SQL コードをコピーして貼り付け、既存の SQL リソースを使うように求められることがあります。 コードを実行する前に、コードが正しくコピーされていることを確認してください。
Automation アカウントを作成する
-
ラボの仮想マシンからブラウザー セッションを開始し、https://portal.azure.com に移動します。 このラボ仮想マシンの [リソース] タブで提供されている Azure の [ユーザー名] と [パスワード] を使用してポータルに接続します。
-
Azure portal の検索バーに「automation」と入力し、検索結果から [Automation アカウント] を選択して、 [+ 作成] を選択します。
-
[Automation アカウントの作成] ページで、次の詳細を入力して、 [確認と作成] を選択します。
- リソース グループ: <お使いのリソース グループ>
- 名前: autoAccount
- 場所: 既定値を使用します。
-
[レビュー] ページで、 [作成] を選択します。
[!NOTE] Automation アカウントは約 3 分で作成されます。
既存の Azure SQL Database に接続する
-
Azure portal 内で、「sql データベース」を検索して、自分のデータベースに移動します。
-
SQL データベース AdventureWorksLT を選択します。
-
SQL Database ページのメイン セクションで、 [クエリ エディター (プレビュー)] を選択します。
-
データベースにサインインするための資格情報を入力するように求められます。 次の資格情報を使用します。
- ログイン: sqladmin
- パスワード: P@ssw0rd01
-
次のエラー メッセージが表示されます。
-
上記のエラー メッセージの最後にある [許可リスト IP …] リンクを選択します。 これにより、クライアント IP が SQL Database のファイアウォール規則エントリとして自動的に追加されます。
-
クエリ エディターに戻り、 [OK] を選択して、データベースにサインインします。
-
ブラウザーで新しいタブを開き、GitHub ページに移動して、AdaptativeIndexDefragmentation スクリプトにアクセスします。 次に、 [Raw] を選択します。
これにより、コピー可能な形式でコードが提供されます。 すべてのテキストを選択し ( CTRL + A )、クリップボードにコピーします ( CTRL + C )。
[!NOTE] このスクリプトの目的は、1 つ以上のデータベースに対して、1 つ以上のインデックスのインテリジェントな最適化と、必要な統計情報の更新を実行することです。
-
GitHub ブラウザー タブを閉じ、Azure portal に戻ります。
-
コピーしたテキストを [クエリ 1] ペインに貼り付けます。
-
クエリの 5 行目と 6 行目の
USE msdb
とGO
(スクリーンショットで強調表示されています) を削除し、[実行] を選択します。 -
[ストアド プロシージャ] フォルダーを展開して、作成された内容を確認します。
Automation アカウント資産を構成する
次の手順で、Runbook の作成準備として必要な資産を構成します。 次に、[Automation アカウント] を選択します。
-
Azure portal 上で、上部の検索ボックスに「automation」と入力します。
-
作成した Automation アカウントを選択します。
-
Automation ブレードの [共有リソース] セクションで、 [モジュール] を選択します。 [ギャラリーの参照] を選択します。
-
ギャラリー内で sqlserver を検索します。
-
SqlServer を選択すると、次の画面に移動するので、 [選択] を選択します。
-
[モジュールの追加] ページで、使用可能な最新のランタイム バージョンを選択し、 [インポート] を選択します。 これにより、PowerShell モジュールが Automation アカウントにインポートされます。
-
データベースに安全にサインインするには、資格情報を作成する必要があります。 Automation アカウントのブレードから、[共有リソース] セクションに移動し、[資格情報] を選択します。
-
[+ 資格情報の追加] を選択し、以下の情報を入力して、 [作成] を選択します。
- 名前: SQLUser
- ユーザー名: sqladmin
- パスワード: P@ssw0rd01
- パスワードの確認: P@ssw0rd01
PowerShell Runbook を作成する
-
Azure portal 内で、「sql データベース」を検索して、自分のデータベースに移動します。
-
SQL データベース AdventureWorksLT を選択します。
-
[概要] ページで、次に示すように、Azure SQL データベースの [サーバー名] をコピーします (サーバー名は dp300-lab で始まるはずです)。 これは後の手順で貼り付けます。
-
Azure portal 上で、上部の検索ボックスに「automation」と入力します。
-
作成した Automation アカウントを選択します。
-
Automation アカウント ブレードの [プロセス オートメーション] セクションまでスクロールし、 [Runbook] 、 [+ Runbook の作成] の順に選択します。
[!NOTE] 学習したように、2 つの既存の Runbook が作成されていることに注意してください。 これらは、Automation アカウントのデプロイ中に自動的に作成されました。
-
Runbook の名前として「IndexMaintenance」を、Runbook の種類として「PowerShell」を入力します。 使用可能な最新のランタイム バージョンを選択し、 [作成] を選択します。
-
Runbook が作成されたら、以下の PowerShell コード スニペットをコピーして Runbook エディターに貼り付けます。 スクリプトの 1 行目に、上記の手順でコピーしたサーバー名を貼り付けます。 [保存] を選択してから、[公開] を選択します。
メモ: Runbook を保存する前に、コードが正しくコピーされていることを確認してください。
$AzureSQLServerName = '' $DatabaseName = 'AdventureWorksLT' $Cred = Get-AutomationPSCredential -Name "SQLUser" $SQLOutput = $(Invoke-Sqlcmd -ServerInstance $AzureSQLServerName -UserName $Cred.UserName -Password $Cred.GetNetworkCredential().Password -Database $DatabaseName -Query "EXEC dbo.usp_AdaptiveIndexDefrag" -Verbose) 4>&1 Write-Output $SQLOutput
-
すべてが問題なければ、成功メッセージを受け取るはずです。
Runbook のスケジュールの作成
次に、Runbook をスケジュールして定期的に実行されるようにします。
-
IndexMaintenance Runbook の左側のナビゲーションにある [リソース] の下で、 [スケジュール] を選択します。 次に、[+ スケジュールの追加] を選択します。
-
[スケジュールを Runbook にリンクします] を選択します。
-
[+ スケジュールの追加] を選択します。
-
必要に応じて、わかりやすいスケジュール名と説明を入力します。
-
翌日の午前 4 時 00 分の開始時刻を太平洋時間のタイム ゾーンで指定します。 1 日ごとの繰り返しを構成します。 有効期限は設定しないでください。
-
[作成] を選択してから [OK] を選択します。
-
これでスケジュールが作成され、Runbook にリンクされました。 [OK] を選択します。
Azure Automation から、Azure 環境と非 Azure 環境にわたって一貫した管理をサポートするクラウドベースのオートメーションと構成サービスが提供されています。
この演習を完了することで、SQL サーバー データベースのインデックスの最適化を、毎日午前 4 時に実行するように自動化しました。