Microsoft SQLのパフォーマンス監視を有効にする(プレビュー)

この記事では、Microsoft SQLサービスのパフォーマンス監視を有効・無効にし、パフォーマンスデータがデータベースハブのパフォーマンスページに表示される方法について説明します。 パフォーマンス監視を有効にしても追加コストは発生しません。 監視エージェントやデータストア、その他の監視インフラを展開・維持する必要はありません。

重要

この機能は プレビュー段階です。

パフォーマンスモニタリングを有効にする手順はサービスによって異なります。 監視をオンにすると、すべてのサービスがパフォーマンスデータを同じテレメトリパイプラインに送信します。 データベースハブはこのデータを活用してパフォーマンスの問題を特定し、ダッシュボードを作成します。 また、KQLでテレメトリを直接照会することもできます。 詳細については、「 パフォーマンス監視テレメトリのクエリ」を参照してください。 この記事では以下のサービスについて説明します。

Microsoft SQLリソースは、Azure、Fabric、オンプレミスからデータベースハブで閲覧できます。 以下のリソースタイプが含まれています:

  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure VM での SQL Server
  • Azure Arc によって有効化された SQL Server
  • Azure SQL Database エラスティック プール
  • Fabric の SQL データベース

以下のリソースタイプはデータベースハブで確認できますが、 パフォーマンス ページはまだサポートしていません:

  • Fabric の SQL データベース
  • Azure SQL Database エラスティック プール
  • Azure SQL Managed Instance
  • パフォーマンス監視はAzure SQL Databaseのエラスティックプールや二次レプリカのデータベースからデータを収集しません。

地域別利用可能性とデータ処理

Microsoft SQLリソースに対しては、以下のAzureリージョンでパフォーマンス監視が利用可能です。 プレビュー期間中は、政府クラウド、ソブリンクラウド、およびエアギャップ クラウドはサポートされません。 詳細については、「Fabric リージョンの可用性」を参照してください。

  • ブラジル南部
  • カナダ中部
  • カナダ東部
  • 米国中部
  • 米国東部
  • 米国東部 2
  • 米国中北部
  • 米国中南部
  • 米国中西部
  • 米国西部
  • 米国西部 2
  • 米国西部 3

パフォーマンスモニタリングは、SQLリソースの動的管理ビュー(DMV)からパフォーマンスデータを収集します。 パフォーマンス監視は個人データや顧客コンテンツを収集せず、データは監視対象のSQLリソースの地理的外に静止状態で保存されません。

Azure リソース プロバイダーを登録する

パフォーマンス監視データを閲覧するには、監視したいデータベースリソースを含む各サブスクリプションのリソースプロバイダー Microsoft.AzureArcData を登録してください。 詳細は azプロバイダーレジスターをご覧ください。

az provider register --namespace Microsoft.AzureArcData

登録状態を確認するには、以下のコマンドを実行してください。 コマンドが Registered を返すと、登録が完了します。

az provider show --namespace Microsoft.AzureArcData --query "registrationState" --output tsv

Azure SQL Database のパフォーマンス監視を有効にする

次のいずれかの方法を使用します。

  • データベースハブで エステート ページに行き、リソースを選択し、「 パフォーマンスモニタリングを有効にする」を選択してください。
  • 監視したい各ユーザーデータベースに対して以下のT-SQLスクリプトを実行します。 スクリプトを master データベースで実行しないでください。 複数のサーバーに同時にスクリプトを適用するには、SQL Server Management Studio(SSMS)でのマルチサーバークエリを検討してください。 監視したい各ユーザーデータベースに MS_EnablePerformanceMonitoringPreview 拡張プロパティを追加してください。
IF EXISTS (
    SELECT 1
    FROM sys.extended_properties
    WHERE class = 0
      AND name = N'MS_EnablePerformanceMonitoringPreview'
)
BEGIN
    EXEC sys.sp_updateextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END
ELSE
BEGIN
    EXEC sys.sp_addextendedproperty
        @name = N'MS_EnablePerformanceMonitoringPreview',
        @value = N'true';
END;
GO

Azure SQL Databaseのパフォーマンス監視を無効にする方法

ユーザーデータベースのパフォーマンスデータの収集をやめるには、両方のプロシージャコールで @value = N'true' を @value = N'false' に変更し、そのデータベースでT-SQLスクリプトを再実行します。

Azure VMs で SQL Server のパフォーマンス監視を有効にする

Azure VM上でSQL Serverパフォーマンス監視を有効にするには、SQL IaaS Agent拡張機能の公開設定にDatabaseWatcheronAzureVM機能フラグを追加してください。 拡張はSQL Serverインスタンスからパフォーマンスデータを収集し、VMのシステム割り当て管理IDを使って地域のテレメトリエンドポイントにアップロードします。 監視はVMごとに設定されます。 あるVMで機能フラグを有効にしても、他のVMでの監視は有効になりません。

検証、トラブルシューティング、収集データセットの全リストについては、「Azure VMsにおけるSQL Serverのパフォーマンス監視を有効にする」をご覧ください。

Azure VM 上の SQL Server の前提条件

  • パフォーマンスモニタリングはAzure VM上でSQL Server 2016 SP1以降のバージョンをサポートしています。 2016年SQL Server SP1以前のバージョンSQL Serverサポートされていません。
  • パフォーマンスモニタリングは、SQL Server EnterpriseおよびStandardエディションのすべてのデータセットを収集します。 SQL Server Developer、Express、Evaluationエディションでは、パフォーマンスモニタリングはクライアント接続データのみを収集します。
  • SQL IaaS Agent拡張 バージョンは 2.0.229.0 以降のフルマネジメントモードでインストールする必要があります。 拡張機能を有効にしなければならず、そのプロビジョニング状態 は「成功」でなければなりません。
  • VMは システム割り当ての管理ID を有効にしている必要があります。
  • SQL Serverインスタンスリソースは統合インベントリを通じて利用可能でなければなりません。
  • サブスクリプションにはMicrosoft.AzureArcDataリソース提供者の登録が必要です。
  • VMはポート443からtelemetry.<region>.arcdataservices.comへのアウトバウンドHTTPS接続を許可しなければならず、<region>はVMをホストするAzureリージョンです。
  • 最新バージョンのAzure CLIが必要です。
  • 仮想マシンの拡張機能を閲覧・更新するには、 仮想マシン 貢献者の役割のメンバーシップなどの権限が必要です。

Azure VMs上でSQL Serverのパフォーマンス監視を有効にする方法

重要

SQL IaaSエージェントの拡張設定は累積的ではありません。 拡張機能を更新する際は、既存の公開設定をすべて含めて、意図せず別の機能を無効化しないようにしましょう。

以下のPowerShellの手順で、現在の公開設定を取得し、パフォーマンス監視機能フラグを追加し、マージした設定を拡張に適用します。

  1. Azure CLIがインストールされている環境でPowerShellを開き、その後Azureにサインインしてください。

    az login
    
  2. SQL Server VMの変数を設定してください。

    $subscriptionId = "<subscription-id>"
    $resourceGroup = "<resource-group>"
    $vmName = "<vm-name>"
    
    az account set --subscription $subscriptionId
    
  3. 現在のSQL IaaSエージェント拡張設定を取得してください。

    $extension = az vm extension show `
      --resource-group $resourceGroup `
      --vm-name $vmName `
      --name SqlIaasExtension `
      --query "{settings:settings,typeHandlerVersion:typeHandlerVersion}" `
      --output json | ConvertFrom-Json
    
    if ($null -eq $extension.settings) {
      $settings = [pscustomobject]@{}
    }
    else {
      $settings = $extension.settings
    }
    
  4. 既存の機能フラグを維持しつつ、機能フラグを DatabaseWatcheronAzureVM 追加します。

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $true
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  5. マージした設定を保存し、SQL IaaS Agent拡張機能に適用してください。

    $settingsPath = Join-Path $env:TEMP "sqlvm-performance-monitoring-settings.json"
    
    try {
      $settings |
        ConvertTo-Json -Depth 50 |
        Out-File -FilePath $settingsPath -Encoding utf8
    
      az vm extension set `
        --resource-group $resourceGroup `
        --vm-name $vmName `
        --publisher Microsoft.SqlServer.Management `
        --name SqlIaaSAgent `
        --extension-instance-name SqlIaasExtension `
        --settings "@$settingsPath"
    }
    finally {
      Remove-Item $settingsPath -ErrorAction SilentlyContinue
    }
    
  6. 監視したいVMごとにこれらの手順を繰り返してください。

拡張機能は公開設定を自動的に再読み込みします。 SQL ServerのIaaSエージェントサービスやVMを再起動する必要はありません。 ほとんどの性能データは設定が有効になってから3〜5分以内に入手可能です。 一部のインベントリベースのデータは最大15分かかることもあります。

監視が実行されているかを確認するために、拡張機能のステータスを確認してください:

az vm extension show `
  --resource-group $resourceGroup `
  --vm-name $vmName `
  --name SqlIaasExtension `
  --instance-view `
  --query "instanceView.statuses[0].message" `
  --output tsv

パフォーマンスモニタリングが正常に実行され、データがアップロードされている場合、ステータスには DatabaseMonitorArcPlugin: {"State":"Running","MetricsUploadStatus":"OK"}が含まれます。 データが利用可能かを確認するために、 Query performance monitoring telemetryの接続テストクエリを実行します。

Azure VMs 上の SQL Server のパフォーマンス監視を無効化してください

VMの新しいパフォーマンスデータの収集を停止するには、 DatabaseWatcheronAzureVM 機能フラグを falseに設定してください。 変更を既存の公開設定とマージし、他のSQL IaaSエージェント拡張機能が影響を受けないようにしてください。

  1. Azure VMsでSQL Serverのパフォーマンス監視を有効にする手順1から3を完了し、サインイン、変数設定、現在の設定を取得してください。

  2. DatabaseWatcheronAzureVM機能フラグをfalseに設定しつつ、既存の機能フラグは保持してください。

    $monitoringFlag = [pscustomobject]@{
      Name = "DatabaseWatcheronAzureVM"
      Enable = $false
    }
    
    $featureFlags = @(
      $settings.FeatureFlags |
        Where-Object { $_.Name -ne $monitoringFlag.Name }
    )
    $featureFlags += $monitoringFlag
    
    $settings | Add-Member `
      -MemberType NoteProperty `
      -Name FeatureFlags `
      -Value $featureFlags `
      -Force
    
  3. Azure VMsでSQL Serverのパフォーマンス監視を有効にするステップ5を完了し、マージ設定を拡張に適用してください。

新しい設定が有効になるまで数分待ってから、再度延長ステータスを確認して変更を確認してください。

Azure Arcで有効化されたSQL Serverのパフォーマンス監視を有効にしてください

Azure Arcで有効化されたSQL Serverのパフォーマンス監視はデフォルトでオンになっています。 インスタンスがこのセクションのすべての前提条件を満たすと、自動的にパフォーマンスデータを収集し、他のステップを踏む必要はありません。 詳細については、「Azure Arcで有効化されたSQL Serverモニター」をご覧ください。

Azure Arc 対応 SQL Server の前提条件

  • SQL Server(WindowsAgent.SqlServer)のAzure拡張はバージョン1.1.2504.99以降でなければなりません。
  • SQL ServerはWindows上で動作しなければなりません。 SQL Server on Linux はサポートされていません。 Windows Server 2012 R2およびそれ以前のバージョンのSQL Serverはサポートされていません。
  • SQL ServerはStandardかEnterpriseエディションでなければなりません。
  • SQL Serverはバージョン2016 SP1以降でなければなりません。
  • サーバーは *.<region>.arcdataservices.comに接続できなければなりません。 詳細については、 ネットワーク要件を参照してください。
  • Azure Arcで有効化されているSQL Serverのライセンスタイプは、ソフトウェア保証(Software Assurance)か、従量課金(Pay-as-You-Go)である必要があります。
  • Microsoft.AzureArcData/sqlServerInstances/getTelemetry/アクションを含むAzure役割が必要です。 組み込みのAzureハイブリッドデータベース管理者 - 読み取り専用サービスロールにはこのアクションが含まれています。 詳細については、 Azure の組み込みロールに関するページを参照してください。
  • フェイルオーバークラスターインスタンスは現在サポートされていません。

Azure Arcで有効化されたSQL Serverのパフォーマンス監視を有効にする方法

以下のコマンドはパフォーマンスデータの収集を可能にします。 コマンドは正常に実行されるかもしれませんが、システムはインスタンスがこのセクションのすべての前提条件を満たした場合にのみパフォーマンスデータを収集します。

Azureポータルでコレクションのオン・オフを切り替えるには:

  1. Azure Arc 対応の SQL Server のリソース ページで、[パフォーマンス ダッシュボード (プレビュー)] を選択します。
  2. [パフォーマンス ダッシュボード] ウィンドウの上部にある [構成] ボタンをクリックします。
  3. 「 監視設定の設定 パネル」で、トグルを使って監視データ収集をオンにします。
  4. [設定の適用] を選択します。

Azure CLIを使ってコレクションを有効にするには、以下のコマンドを実行します。 サブスクリプション ID と リソース グループ、リソース名のプレースホルダーを置き換えます。

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=true' --api-version 2023-09-01-preview

Azure Arcで有効化されたSQL Serverのパフォーマンス監視を無効にする方法

Azureポータルでコレクションのオン・オフを切り替えるには:

  1. Azure Arc 対応の SQL Server のリソース ページで、[パフォーマンス ダッシュボード (プレビュー)] を選択します。
  2. [パフォーマンス ダッシュボード] ウィンドウの上部にある [構成] ボタンをクリックします。
  3. 「 監視設定の設定 」パネルで、トグルを使って監視データ収集をオフにします。
  4. [設定の適用] を選択します。

Azure CLIを使ってコレクションを無効にするには、以下のコマンドを実行します。 サブスクリプション ID と リソース グループ、リソース名のプレースホルダーを置き換えます。

az resource update --ids "/subscriptions/<sub_id>/resourceGroups/<resource_group>/providers/Microsoft.AzureArcData/SqlServerInstances/<resource_name>" --set 'properties.monitoring.enabled=false' --api-version 2023-09-01-preview

次のステップ