次の方法で共有


SQL Server データベースを移行するための Azure のレコメンデーションを取得する

Azure Data Studio 用の Azure SQL Migration 拡張機能を使用すると、データベース要件を評価し、Azure リソースの適切なサイズの SKU に関するレコメンデーションを取得し、SQL Server データベースを Azure に移行することができます。

この統合されたエクスペリエンスを使用して、ソース SQL Server インスタンスからパフォーマンス データを収集し、Azure SQL ターゲットに対して適切なサイズの Azure のレコメンデーションを取得する方法について説明します。

概要

Azure SQL に移行する前に、Azure Data Studio の SQL Migration 拡張機能を使用すると、Azure SQL Database、Azure SQL Managed Instance、Azure Virtual Machines ターゲットの SQL Server に対して適切なサイズのレコメンデーションを生成できます。 このツールは、ソース SQL インスタンス (実行されているオンプレミスまたは他のクラウド) からパフォーマンス データを収集し、ワークロードのニーズを満たすコンピューティングおよびストレージ構成を推奨するのに役立ちます。

この図は、Azure Data Studio の Azure SQL Migration 拡張機能における Azure のレコメンデーションのワークフローを示しています。

SKU レコメンデーション プロセスのワークフローを示す図。

Note

Azure Data Studio 用の Azure SQL 移行拡張機能の評価および Azure レコメンデーション機能では、Windows または Linux 上で実行されているソース SQL Server インスタンスもサポートします。

前提条件

SQL Server データベースの移行に関する Azure のレコメンデーションを利用するには、次の前提条件を満たしている必要があります。

サポートされているソースとターゲット

Azure のレコメンデーションは、次の SQL Server バージョンに対して生成できます。

  • Windows または Linux では SQL Server 2008 以降のバージョンがサポートされています。
  • その他のクラウド上で実行されている SQL Server もサポートされる場合がありますが、結果の正確性は異なる場合があります

Azure のレコメンデーションは、次の Azure SQL ターゲットに対して生成できます。

  • Azure SQL Database
    • ハードウェア ファミリ: Standard シリーズ (Gen5)
    • サービス レベル: General Purpose、Business Critical、Hyperscale
  • Azure SQL Managed Instance
    • ハードウェア ファミリ: Standard シリーズ (Gen5)、Premium シリーズ、Premium シリーズ (メモリ最適化)
    • サービス レベル: General Purpose、Business Critical
  • Azure Virtual Machine 上の SQL Server
    • VM ファミリ: General Purpose、メモリ最適化
    • ストレージ ファミリ: Premium SSD

パフォーマンス データの収集

レコメンデーションを生成するには、ソース SQL Server インスタンスからパフォーマンス データを収集する必要があります。 このデータ収集手順では、ワークロードのパフォーマンス特性を取り込むために、SQL Server インスタンスの複数の動的システム ビュー (DMV) が照会されます。 このツールを使用すると、CPU、メモリ、ストレージ、IO 使用率などのメトリックを 30 秒ごとに取り込み、パフォーマンス カウンターを CSV ファイルのセットとしてマシンのローカルに保存することができます。

インスタンス レベル

このパフォーマンス データは、SQL Server インスタンスごとに 1 回収集されます。

パフォーマンスのディメンション 説明 動的管理ビュー (DMV)
SqlInstanceCpuPercent SQL Server プロセスが使用していた CPU の量 (割合) sys.dm_os_ring_buffers
PhysicalMemoryInUse SQL Server プロセスの全体的なメモリ占有領域 sys.dm_os_process_memory
MemoryUtilizationPercentage SQL Server のメモリ使用率 sys.dm_os_process_memory

データベース レベル

パフォーマンスのディメンション 説明 動的管理ビュー (DMV)
DatabaseCpuPercent データベースによって使用される CPU の合計割合 sys.dm_exec_query_stats
CachedSizeInMb データベースで使用されるキャッシュの合計サイズ (メガバイト単位) sys.dm_os_buffer_descriptors

ファイル レベル

パフォーマンスのディメンション 説明 動的管理ビュー (DMV)
ReadIOInMb このファイルから読み取られた合計メガバイト数 sys.dm_io_virtual_file_stats
WriteIOInMb このファイルに書き込まれた合計メガバイト数 sys.dm_io_virtual_file_stats
NumOfReads このファイルに対して発行された読み取りの合計数 sys.dm_io_virtual_file_stats
NumOfWrites このファイルに対して発行された書き込みの合計数 sys.dm_io_virtual_file_stats
ReadLatency このファイルの IO 読み取り待機時間 sys.dm_io_virtual_file_stats
WriteLatency このファイルの IO 書き込み待機時間 sys.dm_io_virtual_file_stats

レコメンデーションを生成するには、少なくとも 10 分間のデータ収集が必要ですが、ワークロードを正確に評価するには、ピーク時とピーク時以外の両方の使用状況を把握できる十分な長さの期間、データ収集を実行することをお勧めします。

データ収集プロセスを開始するには、まず Azure Data Studio でソース SQL インスタンスに接続し、SQL 移行ウィザードを起動します。 手順 2 で、[Azure のレコメンデーションを取得する] を選択します。 [パフォーマンス データを今すぐ収集する] を選択し、収集したデータを保存するマシン上のフォルダーを選択します。

SKU レコメンデーションのパフォーマンス データを収集するウィザード ペインを示すスクリーンショット。

データ収集プロセスは10分間実行され、最初のレコメンデーションが生成されます。 アクティブなデータベース ワークロードが本番シナリオに類似した使用状況を反映しているときに、データ収集プロセスを開始することが重要です。

最初のレコメンデーションが生成された後、データ収集プロセスを継続的に実行してレコメンデーションを調整できます。 このオプションは、使用パターンが時間の経過とともに変化する場合に特に便利です。

[開始] を選択すると、データ収集プロセスが開始されます。 10 分ごとに、収集されたデータ ポイントが集計され、各カウンターの最大値、平均値、分散値が 3 つの CSV ファイルのセットとしてディスクに書き込まれます。

通常、選択したフォルダー内には、次のサフィックスが付いた一連の CSV ファイルが表示されます。

  • SQLServerInstance_CommonDbLevel_Counters.csv: データベース ファイルのレイアウトとメタデータに関する静的構成データが含まれています。
  • SQLServerInstance_CommonInstanceLevel_Counters.csv: サーバー インスタンスのハードウェア構成に関する静的データが含まれています。
  • SQLServerInstance_PerformanceAggregated_Counters.csv: 頻繁に更新される集計パフォーマンス データが含まれています。

この間、Azure Data Studio は開いたままにしておきますが、他の操作を続行できます。 このページに戻って [データ収集の停止] を選択すると、いつでもデータ収集プロセスを停止できます。

適切なサイズの推奨事項の生成

以前のセッションからパフォーマンス データを既に収集している場合、または別のツール (Database Migration Assistant など) を使用している場合は、[パフォーマンス データが既にあります] オプションを選択して、既存のパフォーマンス データをインポートできます。 パフォーマンス データ (3 つの .csv ファイル) が保存されているフォルダーを選択し、[開始] を選択してレコメンデーション プロセスを開始します。

SKU レコメンデーションのパフォーマンス データをインポートするペインを示すスクリーンショット。

SQL 移行ウィザードの手順 1 では、評価するデータベースのセットを選択するように求められます。レコメンデーション プロセスで考慮されるのはこれらのデータベースのみです。

ただし、パフォーマンス データ収集プロセスでは、選択したものだけでなく、ソース SQL Server インスタンスからすべてのデータベースのパフォーマンス カウンターが収集されます。

これは、手順 1 で別の一覧を指定することで、以前に収集されたパフォーマンス データを使用して、データベースの別のサブセットに対してレコメンデーションを繰り返し再生成できることを意味します。

レコメンデーション パラメーター

レコメンデーションに影響を与える可能性のある構成可能な設定が複数あります。

[レコメンデーション パラメーター] セクションを示すスクリーンショット。

必要に応じて、[パラメーターの編集] オプションを選択し、これらのパラメーターを調整します。

さまざまなレコメンデーション パラメーターを示すスクリーンショット。

  • スケール ファクター:

    このオプションを使用すると、各パフォーマンス ディメンションに適用するバッファーを指定できます。 このオプションでは、季節ごとの使用量、短期間のパフォーマンス履歴、将来に使用量が増える可能性などの問題が考慮されます。 たとえば、4 仮想コア CPU 要件のスケール ファクターが 150% であると判断した場合、実際の CPU 要件は 6 個の仮想コアです。

    既定のスケール ファクター ボリュームは 100% です。

  • 使用率:

    パフォーマンス データの集計中に使用されるデータ ポイントのパーセンタイル。

    既定値は 95 パーセンタイルです。

  • プレビュー機能を有効にする:

    このオプションを使用すると、まだすべてのリージョンのすべてのユーザーに一般提供されていない構成の推奨事項を受け取ることができます。

    このオプションは既定ではオフになっています。

  • エラスティック レコメンデーションを有効にする:

    このオプションでは、既存のクラウド顧客に対してパーソナライズされた価格パフォーマンス プロファイリングを利用する代替のレコメンデーション モデルが使用されます。

    このオプションは既定ではオフになっています。

Azure Data Studio を終了すると、データ収集プロセスも終了します。 その時点まで収集されたデータは、フォルダーに保存されます。

データ収集の進行中に Azure Data Studio を閉じる場合は、次のいずれかのオプションを使用してデータ収集を再開します。

  • Azure Data Studio を再度開き、自分のローカル フォルダーに保存されているデータ ファイルをインポートします。 次に、収集されたデータからレコメンデーションを生成します。

  • Azure Data Studio を再度開き、移行ウィザードを使用してデータ収集を再度開始します。

最小限のアクセス許可

パフォーマンス データ収集に必要なシステム ビューのクエリを実行するには、このタスクに使用される SQL Server ログインに対する特定のアクセス許可が必要です。 次のスクリプトを使用して、評価およびパフォーマンス データ収集のための最小限の特権を持つユーザーを作成できます。

-- Create a login to run the assessment
USE master;
GO

CREATE LOGIN [assessment]
    WITH PASSWORD = '<STRONG PASSWORD>';

-- Create user in every database other than TempDB and model and provide minimal read-only permissions
EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''TempDB'',''model''))
   BEGIN TRY
      CREATE USER [assessment] FOR LOGIN [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH';

EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))
   BEGIN TRY
      GRANT SELECT ON sys.sql_expression_dependencies TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH';

EXECUTE sp_MSforeachdb '
   USE [?];
   IF (''?'' NOT IN (''tempdb'',''model''))
   BEGIN TRY
      GRANT VIEW DATABASE STATE TO [assessment]
   END TRY
   BEGIN CATCH
      PRINT ERROR_MESSAGE()
   END CATCH';

-- Provide server level read-only permissions
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT SELECT ON sys.sql_expression_dependencies TO [assessment];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [assessment];
GRANT VIEW DATABASE STATE TO assessment;
GRANT VIEW SERVER STATE TO assessment;
GRANT VIEW ANY DEFINITION TO assessment;

-- Provide msdb specific permissions
USE msdb;
GO

GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [assessment];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [assessment];

-- USE master;
-- GO
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [assessment] END TRY BEGIN CATCH SELECT ERROR_MESSAGE() END CATCH';
-- DROP LOGIN [assessment];

サポートされていないシナリオと制限事項

  • Azure の推奨事項には価格の見積もりは含まれていません。価格の状況は、リージョン、通貨、Azure ハイブリッド特典などの割引によって異なる場合があるためです。 価格の見積もりを取得するには、Azure 料金計算ツールを使用するか、Azure Migrate で SQL 評価を作成します。

  • DTU ベースの購入モデルを使用した Azure SQL Database のレコメンデーションはサポートされていません。

  • 現在、Azure SQL Database サーバーレス コンピューティング レベルとエラスティック プールに対する Azure のレコメンデーションはサポートされていません。

トラブルシューティング

  • レコメンデーションが生成されません
    • レコメンデーションが生成されなかった場合、この状況は、ソース インスタンスのパフォーマンス要件を完全に満たすことができる構成が特定されなかったことを意味する可能性があります。 特定のサイズ、サービス レベル、またはハードウェア ファミリが不適格となった理由を確認するには、次の手順を実行します。
      • Azure Data Studio のログにアクセスするには、[ヘルプ] > [すべてのコマンドの表示] > [拡張機能のログ フォルダーを開く] に移動します
      • Microsoft.mssql > SqlAssessmentLogs > に移動し、SkuRecommendationEvent.log を開きます
      • ログには、評価されたすべての潜在的な構成のトレースと、それが適格な構成であると見なされた、または見なされなかった理由が含まれています。SKU のレコメンデーション ログの詳細を示すスクリーンショット。
    • エラスティック レコメンデーションを有効にしてレコメンデーションを再生成してみてください。 このオプションでは、既存のクラウド顧客に対してパーソナライズされた価格パフォーマンス プロファイリングを利用する代替のレコメンデーション モデルが使用されます。