Azure VM での SQL Server の SQL ベスト プラクティス評価

適用対象: Azure VM 上の SQL Server

Azure portal の SQL ベスト プラクティス 評価機能は、可能のパフォーマンス問題を特定し、SQL Assessment API によって提供される豊富なルールセットを使用して、Azure Virtual Machines (VM) 上の SQL Server がベスト プラクティスに従って構成されているかを評価します。

詳細については、次の「SQL ベスト プラクティス評価」のビデオをご覧ください。

概要

SQL ベスト プラクティス 評価機能が有効になると、SQL Server インスタンスとデータベースがスキャンされ、インデックス、非推奨の機能、トレース フラグや統計の有効化または欠落などの推奨事項が提供されます。推奨事項は、Azure portalSQL VM 管理ページに表示されます。

評価の結果は、Azure Monitor Agent (AMA) を使用して Log Analytics ワークスペースにアップロードされます。 AMA 拡張機能がまだインストールされていない場合は、SQL Server VM にインストールされ、DCEDCR などの AMA リソースが作成され、指定された Log Analytics ワークスペースに接続されます。

評価の実行時間は、環境 (データベースやオブジェクトの数など) に依存し、数分から最大 1時間の期間があります。 同様に、評価結果のサイズも環境によって異なります。 評価は、インスタンスと、そのインスタンス上のすべてのデータベースに対して実行されます。 このテストでは、評価の実行がコンピューターに最大5-10% の CPU 影響を与えることを確認しました。 これらのテストでは、SQL Server に対して TPC-C などのアプリケーションが実行されている間に評価が行われました。

前提条件

SQL ベスト プラクティス評価機能を使用するには、次の前提条件が必要です。

アクセス許可

SQL ベスト プラクティス アセスメントを有効にするには、次のアクセス許可が必要です。

  • 基になる仮想マシン リソースに対する仮想マシン共同作成者
  • SQL 仮想マシン リソースの仮想マシン共同作成者
  • Log Analytics ワークスペースを含むリソース グループの Log Analytics 共同作成者
  • Azure Monitor エージェント リソースが作成されるリソース グループの閲覧者。 SQL ベスト プラクティス アセスメント機能を有効にする場合は、リソース グループの構成オプションを確認します。

有効にする

Azure portal または Azure CLI を使用して、SQL ベスト プラクティス アセスメントを有効にすることができます。

Azure portal を使用して SQL ベスト プラクティス アセスメントを有効にするには、次の手順を行います。

  1. Azure portal にサインインして、[SQL 仮想マシン] リソースに移動します。
  2. [設定][SQL ベストプラクティス評価]を選択します。
  3. [SQL ベスト プラクティス評価の有効化]または [構成]を選択して、[構成]ページに移動します。
  4. [SQL ベスト プラクティス評価の有効化] チェックボックスをオンにして、次の情報を入力します。
    1. 評価がアップロードされる Log Analytics ワークスペース ドロップダウンからサブスクリプション内の既存のワークスペースを選択します。
    2. Azure Monitor Agent リソースである DCEDCR が作成されるリソース グループを選択します。 複数の SQL Server VM で同じリソース グループを指定した場合、これらのリソースは再利用されます。
    3. 実行スケジュール 必要に応じて評価を実行するか、スケジュールに基んで自動的に評価を実行することもできます。 スケジュールを選択した場合は、頻度 (毎週または毎月)、週の日、繰り返し (1 ~ 6 週間ごとに)、評価を開始する時刻 (VM 時間に対してローカル) を指定します。
  5. [Apply](適用) を選択して変更内容を保存し、Azure Monitor Agent がまだ SQL Server VM にデプロイされていない場合はデプロイします。 SQL ベスト プラクティス アセスメント機能が SQL Server VM で使用できるようになると、Azure portal 通知で知らされます。

VMのSQL Server評価

評価の実行。

  • [スケジュールに従う]
  • オン デマンド

スケジュールされた評価を実行する

Azure portal と Azure CLI を使用して、スケジュールに従って評価を構成できます。

[構成]ウィンドウでスケジュールを設定した場合、指定した日時に評価が自動的に実行されます。 構成 を選択して評価スケジュールを変更します。 新しいスケジュールを指定すると、以前のスケジュールが上書きされます。

オンデマンド評価を実行します。

SQL Server VM で SQL ベスト プラクティス アセスメント機能を有効にした後、Azure portal または Azure CLI を使用してオンデマンドで評価を実行することができます。

Azure portal を使用してオンデマンド評価を実行するには、Azure portal の SQL 仮想マシン] リソース ページの[SQL ベスト プラクティス アセスメント]ウィンドウから[評価の実行]を選択します。

結果の表示

[SQL ベスト プラクティス評価] ページの [評価の結果] セクションに、最近実行された評価の一覧が表示されます。 各行には、実行の開始時刻と状態 (スケジュール済み、実行中、結果のアップロード、完了、失敗) が表示されます。 各評価の実行には、インスタンスを評価し、結果を Log Analyticsワークスペースにアップロードする 2 つの部分があります。 状態フィールドは両方の部分を対象とします。 価結果は Azureブックに表示されます。

評価結果のAzureブックにアクセスするには、次の 3つの方法があります。

  • [SQL ベスト プラクティス評価] ページで、[最近成功した評価を表示] ボタン を選択します。
  • [SQL ベスト プラクティス評価]ページの[評価の結果]セクションから、完了した実行を 1 つ選択します。
  • SQL VMリソースページの概要ページに表示される上位10のレコメンデーションから評価結果の表示を選択します。

ブックを開いた後、ドロップダウンを使用して以前の実行を選択できます。 結果ページを使用して1回の実行の結果を表示したり、傾向ページを使用して履歴の傾向を確認したりできます。

[結果] ページ

結果 ページでは、次のタブを使用して、推奨事項が整理されます。

  • すべて: 現在実行のすべての推奨事項
  • 新規: 新しい推奨事項 (以前の実行からの差分)
  • 解決済み: 以前の実行の解決済み推奨事項
  • 分析情報: 最も繰り返される問題と、最も問題が発生しているデータベースが識別されます。

グラフでは、評価の結果を異なる重大度カテゴリ (高、中、低) にグループ化します。 各カテゴリを選択して推奨事項の一覧を表示するか、検索ボックスでキー フレーズを検索します。 最も厳しい推奨事項から始め、一覧に移動するのが最善です。

最初のグリッドには、それぞれの推奨事項と、その環境で問題が発生したインスタンスの数が表示されます。 最初のグリッドで行を選択すると、その特定の推奨事項のすべてのインスタンスが 2 番目のグリッドに表示されます。 最初のグリッドに何も選択されていない場合は、すべての推奨事項が 2 番目のグリッドに表示され、長いリストになる可能性があります。 グリッドの上にあるドロップダウン (名前、重大度、タグ、チェック ID) を使用して、結果をフィルター処理できます。 また、各グリッドの右上隅にある小さなアイコンを選択して、[Excel にエクスポート] を使用して、[ログ ビューで最後の実行クエリを開く]のオプションを 使用することもできます。

グラフの渡れたセクションは、システムが既に従っている推奨事項を識別します。

長い説明や関連するオンライン リソースなど、メッセージフィールドを選択して、各推奨事項の詳細情報を表示します。

傾向ページには、すべての問題、新しい問題、解決された問題の3つのグラフがあります。 グラフは、進行状況を確認するのに役立ちます。 解決された問題の数が増え続けながら、推奨事項の数が少なからず行くのが理想的です。 凡例には、各重大度レベルの問題の平均数が表示されます。 バーにカーソルを合わせると、実行ごとに個々の値が表示されます。

1日に複数の実行がある場合、最新の実行だけが傾向ページのグラフに 含まれます。

サブスクリプション内のすべての VM に対して有効にする

Azure CLI を使用して、サブスクリプション内のすべての SQL Server VM で SQL ベスト プラクティス アセスメント機能を有効にすることができます。 そのためには、次のスクリプトの例を使用します。

# This script is formatted for use with Az CLI on Windows PowerShell. You may need to update the script for use with Az CLI on other shells.
# This script enables SQL best practices assessment feature for all SQL Servers on Azure VMs in a given subscription. It configures the VMs to use a Log Analytics workspace to upload assessment results. It sets a schedule to start an assessment run every Sunday at 11pm (local VM time).
# Please note that if a VM is already associated with another Log Analytics workspace, it will give an error.
 
$subscriptionId = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
# Resource Group where the Log Analytics workspace belongs
$myWsRg = 'myWsRg'
# Log Analytics workspace where assessment results will be stored
$myWsName = 'myWsName'
# Resource Group where the Azure Monitor Agent resources will be created
$myAgentRg = 'myAgentRg'
 
# Ensure in correct subscription
az account set --subscription $subscriptionId
 
$sqlvms = az sql vm list | ConvertFrom-Json 
 
foreach ($sqlvm in $sqlvms)
{
  echo "Configuring feature on $($sqlvm.id)"
  az sql vm update --assessment-weekly-interval 1 --assessment-day-of-week Sunday --assessment-start-time-local "23:00" --workspace-name $myWsName --workspace-rg $myWsRg -g $sqlvm.resourceGroup --agent-rg $myAgentRg -n $sqlvm.name
  
  # Alternatively you can use this command to only enable the feature without setting a schedule
  # az sql vm update --enable-assessment true --workspace-name $myWsName --workspace-rg $myWsRg -g $sqlvm.resourceGroup --agent-rg $myAgentRg -n $sqlvm.name  
 
  # You can use this command to start an on-demand assessment on each VM
  # az sql vm start-assessment -g $sqlvm.resourceGroup -n $sqlvm.name
}

既知の問題

SQL ベスト プラクティス評価を使用する際に、以下の既知の問題のいくつかに遭遇する可能性があります。

Azure Monitor エージェント (AMA) への移行

以前は、SQL ベスト プラクティス アセスメント機能では、Microsoft Monitoring Agent (MMA) を使用して評価を Log Analytics ワークスペースにアップロードしていました。 Microsoft Monitoring Agent は、Azure Monitor エージェント (AMA) とに置き換わりました。 既存の SQL ベスト プラクティス アセスメントを MMA から AMA に移行するには、SQL Server VM を削除し、拡張機能を使用して再登録する必要があります。 評価が有効になった後も、既存の結果は引き続き使用できます。 MMA が他のサービスで使用されていない場合は、削除できます。 移行する前に、Azure Monitor Log Analytics が、SQL Server VM をデプロイするリージョンでサポートされていることを確認してください。

評価を有効にできませんでした

失敗したアクションに関連付けられているエラー メッセージを表示するには、SQL VMを含むリソース グループのデプロイ履歴を参照してください。

評価の実行に失敗しました

Azure portal で評価実行の状態を確認します。 状態が失敗した場合は、状態を選択してエラー メッセージを表示します。 VM にサインインし、C:\WindowsAzure\Logs\Plugins\Microsoft.SqlServer.Management.SqlIaaSAgent\2.0.X.Y の拡張機能ログで失敗した評価の詳細なエラー メッセージを確認することもできます。ここで、2.0.X.Y は拡張機能のバージョンです。

評価の実行で問題が発生した場合:

  • 環境が前提条件をすべて満たしていることを確認します。
  • SQL IaaS エージェント サービスが VM で実行されており、SQL IaaS Agent 拡張機能が正常な状態であることを確認します。 SQL IaaS Agent 拡張機能が正常でない場合は、拡張機能を修復し、問題に対処し、SQL Server のダウンタイムなしで最新バージョンにアップグレードします。
  • NT SERVICE\SqlIaaSExtensionQuery でログイン エラーが発生する場合は、このアカウントが Server permission - CONTROL SERVER アクセス許可付きで SQL Server に追加されていることを確認します。

Log Analytics ワークスペースへの結果のアップロードが失敗した

このエラーは、Microsoft Monitoring Agent (MMA) が想定されている時間内に結果をアップロードできなかったことを示します。

結果が Log Analytics ワークスペースにアップロードできない場合は、次の手順を試してください。

Log Analytics を使用した TLS 構成が正しくないエラー

最も一般的な TLS エラーは、Microsoft Monitoring Agent (MMA) 拡張機能が Log Analytics エンドポイントに接続するときに SSL ハンドシェイクを確立できない場合に発生します。これは通常、TLS 1.0 が OS レベルでレジストリまたは GPO によって適用されているが、.NET Framework 用に更新されていない場合に発生します。 Windows で TLS 1.0 以降を適用し、「Schannel 用のレジストリ キー」で説明されているように古い SSL プロトコルを無効にした場合は、.NET Framework が強力な暗号化を使用するように構成されていることも確認する必要があります。

SQL Assessment を構成した後で Log Analytics ワークスペースを変更できない

Log Analytics ワークスペースに VM が関連付けられると、SQL 仮想マシン リソースから変更することができません。 これは、Log Analytics が他のユース ケースで使用されるのを防ぐためです。 Azure portal の [仮想マシン] ページの Log Analytics リソース ブレードを使用して、VM を切断できます。

Log Analytics ワークスペースのデータ保持のため、結果が期限切れになりました

これは、結果は Log Analytics ワークスペースに、その保持ポリシーに基づいて保持されなくなったことを示します。 ワークスペースの保持期間 を変更できます。