為您的內部部署資料庫識別正確的 Azure SQL Database、Azure SQL 受控執行個體或 Azure VM 上的 SQL Server

將資料庫遷移至雲端可能很複雜。 特別是您嘗試在 Azure VM 目標和 SKU 上,為資料庫選取最佳 Azure SQL Database、SQL 受控執行個體或 SQL Server 時。 Database Migration Assistant (DMA) 會藉由提供使用者易懂的 SKU 建議,協助您解決這些問題,並讓您的資料庫移轉體驗變得更輕鬆。 您現在可以使用效能資料 DMA,為您建議適當的目標 Azure SQL SKU 及說明建議。

SKU 建議功能可讓您從託管資料庫的來源 SQL Server 執行個體收集效能資料,並根據收集的資料,建議 Azure VM SKU 上最低的 Azure SQL 資料庫、Azure SQL 受控執行個體或 SQL Server 版本。 此功能會提供與定價層、計算層級和資料大小相關的建議。 這項功能目前只能透過命令列介面 (CLI) 使用。

下列指示可協助您判斷 SKU 建議,以及使用 DMA 在 Azure 中佈建對應的資料庫。

注意

如果您正在大規模評定 VMWare 上的整個 SQL Server 資料資產,則請使用 Azure Migrate 取得 Azure SQL 部署建議、目標大小調整及每月預估值。

必要條件

  • 下載並安裝最新版的 DMA。 如果您已經有舊版工具,請將其開啟,系統會提示您升級 DMA。
  • 在 SKU 建議主機應用程式執行所在的工具機器上,安裝 .NET Core 6.0 的最低版本。
  • 請確定用來連線到 SQL Server 內部部署來源的帳戶具有系統管理員權限。

注意

建議從可連線到目標 SQL 執行個體的個別工具(用戶端)機器上使用此工具,而不是從託管 SQL Server 本身的機器,以最大程度地降低任何潛在的額外負荷。 收集 SKU 建議的效能資料時,建議工具以預設選項值執行數小時,涵蓋離峰和尖峰工作負載,並且排除維修工作,例如索引重建或備份資料庫。 維護工作可能會影響 CPU、記憶體和 IO 耗用量,進而導致較高的建議 SKU 層。

收集效能資料

收集的資料包括了關於伺服器硬體設定的有限資訊,以及來自系統動態管理檢視 (DMV) 的彙總 SQL 特定效能資料,例如 CPU、記憶體、儲存體使用量、IO 輸送量和 IO 延遲。 收集的資料會儲存在機器本機上,以進行進一步的彙總和分析。 分析來源執行個體的效能特性,針對 Azure SQL 供應項目啟用 SKU 建議(包括 SQL Database、SQL 受控執行個體和 Azure VM 上的 SQL),這些建議將最符合您的工作負載,且同時符合成本效益。

在 DMA 安裝路徑中,找出 SQLAssessmentConsole 資料夾和 SqlAssessment.exe 應用程式。

Screenshot of SKUConsoleApplication.exe file shown in DMA installation folder location.

若要啟動資料收集程序,請使用下列引數在主控台應用程式中指定 PerfDataCollection 動作:

  • sqlConnectionStrings:(必要) 目標 SQL 執行個體的形式連接字串 (以引號括住)。
  • perfQueryIntervalInSec選擇性):查詢效能資料的間隔(以秒為單位)。 (預設值:30)。
  • staticQueryIntervalInSec選擇性):查詢和保存靜態設定資料的間隔(以秒為單位)。 (預設值:60)。
  • numberOfIterations選擇性):保存至檔案之前要反覆執行幾次效能資料收集。 例如,若使用預設值,效能資料每隔 30 秒保存一次 * 20 次反覆 = 10 分鐘。 (預設值:20)。
  • outputFolder選擇性):寫入/讀取效能資料、報表和記錄的資料夾。 (預設值:%LocalAppData%/Microsoft/SqlAssessmentConsole)。

以下是叫用範例:

.\SqlAssessment.exe PerfDataCollection
--sqlConnectionStrings "Data Source=Server1;Initial Catalog=master;Integrated Security=True;" "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
--outputFolder C:\Output

或者,您可以藉由在 JSON 組態檔中提供適當的引數來叫用資料收集程序,並藉由執行可執行檔 (而非執行動作),將組態檔傳遞至工具,如下所示:

.\SqlAssessment.exe --configFile C:\path\to\config.json

以下是相當於先前效能資料收集動作的 [設定檔] 範例:

  {
    "action": "PerfDataCollection",
    "sqlConnectionStrings": [
    "Data Source=Server1;Initial Catalog=master;Integrated Security=True;",
    "Data Source=Server2;Initial Catalog=master;Integrated Security=True;"
    ],
    "outputFolder": "C:\\Output"
  }

您可以在 DMA 安裝路徑下的 Example 資料夾中找到所有動作的組態檔範例:GetMetadataSampleConfigFile.json、PerfDataCollectionSampleConfigFile.json 和 GetSkuRecommendationSampleConfigFile.json。

在命令執行之後,效能和組態資料點會儲存為每個目標執行個體三個 *_Counters.csv 檔案集,每個檔案都包含伺服器和執行個體名稱。 您可以使用此檔案作為程序下一個部分的輸入,這會為 Azure SQL Database、Azure SQL 受控執行個體或 Azure VM 上的 SQL Server 提供 SKU 建議。

使用主控台應用程式來取得 SKU 建議

上一個步驟收集的資料點會作為 SKU 建議程序的輸入。

針對單一資料庫選項,DMA 會針對 Azure SQL 資料資料庫的單一資料庫層、計算層級,以及 SQL 執行個體上每個資料庫的建議儲存體組態提供建議。

針對 Azure SQL 受控執行個體和 Azure VM 上的 SQL Server,建議可支援隨即轉移案例。 因此,SKU 建議主控台應用程式可以針對 Azure SQL 受控執行個體或 Azure VM 層上的 SQL Server、計算層級,以及 SQL 執行個體上一組資料庫的建議儲存體組態,向您提供建議。 您也可以指定只在 SKU 建議中包含或排除一小組資料庫。

根據預設,GetSkuRecommendation 會使用基準策略,將已收集且代表工作負載的效能資料值 (根據指定的百分位數) 對應至 Azure SQL SKU。 我們也提供彈性策略 (統計方法),以收集的效能資料為基礎,根據已遷移至 Azure SQL 的客戶分析工作負載模式,來產生唯一性價比曲線。

若要啟動 SKU 建議程序,請使用下列引數在主控台應用程式中指定 GetSkuRecommendation 動作:

  • perfQueryIntervalInSec選擇性):查詢效能資料的間隔 (以秒為單位)。 注意:提供的值必須符合原本在效能資料收集期間使用的值。 (預設值:30)
  • targetPlatform選擇性);SKU 建議的目標平台:AzureSqlDatabaseAzureSqlManagedInstanceAzureSqlVirtualMachine,或Any。 選擇 Any 可評估所有三個目標平台的 SKU 建議,並傳回最適合的建議。 (預設值:Any)
  • targetSqlInstance選擇性):SKU 建議的目標 SQL 執行個體名稱。 (預設值:outputFolder掃描 PerfDataCollection 動作所建立的檔案,並針對找到的每個執行個體提供建議)
  • targetPercentile選擇性):在彙總效能資料期間要使用的資料點百分位數。 僅用於基準 (非彈性) 策略。 僅用於基準 (非彈性) 策略。 (預設值:95)
  • scalingFactor選擇性):在 SKU 建議期間使用的縮放比例 (緩和) 因素。 例如,如果判斷結果是 4 個虛擬核心的 CPU 需求,而縮放比例因素為 150%,則真正的 CPU 需求為 6 個虛擬核心。 (預設值:100)
  • startTime選擇性):在彙總期間以 yyyy-MM-dd HH:mm 格式考慮的效能資料點 UTC 開始時間。 僅用於基準 (非彈性) 策略。 (預設值:收集的所有資料點都會納入考慮)
  • endTime選擇性):在彙總期間以 yyyy-MM-dd HH:mm 格式考慮的效能資料點 UTC 結束時間。 僅用於基準 (非彈性) 策略。 (預設值:收集的所有資料點都會納入考慮)
  • elasticStrategy選擇性):是否根據統計資源使用方式分析和性價比分析,針對 SKU 建議使用彈性策略。 彈性策略目前適用於 Azure SQL Database 和 SQL 受控執行個體,尚不適用於 Azure VM 目標上的 SQL Server。 (預設值:false)
  • databaseAllowList選擇性):允許用於取得 SKU 建議考量的資料庫名稱(空格分隔清單),同時排除所有其他資料庫。 只設定下列其中一項或兩者都不設定:databaseAllowList、databaseDenyList.。 (預設值:null)
  • databaseDenyList選擇性):從 SKU 建議中排除的資料庫名稱 (空間分隔清單)。 只設定下列其中一項或兩者都不設定:databaseAllowList、databaseDenyList.。 (預設值:null)
  • overwrite選擇性):是否要覆寫任何現有的 SKU 建議報告。 (預設值:true)
  • displayResult選擇性):是否要將 SKU 建議結果列印到主機。 (預設值:true)
  • outputFolder選擇性):寫入/讀取效能資料、報表和記錄的資料夾。 (預設值:%LocalAppData%\Microsoft\SqlAssessment)
  • suppressPreviewFeatures選擇性):如果設定為 true,則建議不會包括處於預覽期間的任何 Azure 功能。 (預設值:false)

您可以在根目錄中的 Console.Settings.json 檔案中找到 SKU 建議的進階設定。 目前包含下列可自訂參數:

CommandTimeoutGroupSetting:逾時之前等待 SQL 查詢命令執行的時間 (以秒為單位)。

  • PerfCollectionCommandTimeout:與效能資料收集相關且可能長時間執行的查詢命令逾時 (預設值:300)
  • DefaultCollectionCommandTimeout:所有其他查詢的命令逾時(預設值:120

ThrottlingGroupSetting:要根據機器上核心數目建立的平行工作數目

  • ServerInstancesParallelCount:要平行評估的伺服器執行個體數目(預設值:2
  • DatabasesParallelCount:要平行評估的資料庫數目(預設值:4
  • UserDefinedObjectsParallelCountPerDb:每個資料庫中要平行評估的使用者定義物件數目 (預存程序、檢視、觸發程序等)(預設值:4

AllowTelemetry:是否允許收集匿名功能使用情況和診斷資料,並將其傳輸給 Microsoft。 (預設值:true)

或者,您可以藉由在 JSON 組態檔中提供適當的引數來叫用 SKU 建議程序,並藉由執行可執行檔 (而非執行動作),將組態檔傳遞至工具,如下所示:

.\SqlAssessment.exe --configFile C:\path\to\config.json

下列 [設定檔] 相當於先前所述的 SKU 建議動作:

{
    "action": "GetSkuRecommendation",
    "outputFolder": "C:\\Output",
    "targetPlatform": "AzureSqlDatabase",
    "targetSqlInstance": "Server1",
    "targetPercentile": 95,
    "scalingFactor": 100,
    "startTime": "2020-01-01 00:00",
    "endTime": "2022-01-01 00:00",
    "perfQueryIntervalInSec": 30,
    "overwrite": "true"
}

若要取得特定 Azure SQL 平台的 SKU 建議,而不是自動選取一個,請提供 --targetPlatform 選項的值,如下所示:

範例 1:取得 Azure SQL Database 的 SKU 建議。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlDatabase

範例 2:使用彈性策略取得 Azure SQL 受控執行個體的 SKU 建議。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlManagedInstance
--elasticStrategy true

範例 3:取得 Azure SQL 虛擬機器的 SKU 建議。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine

範例 4:取得 Azure SQL 虛擬機器和取消預覽功能的 SKU 建議。

.\SqlAssessment.exe GetSkuRecommendation
--outputFolder C:\Output
--targetPlatform AzureSqlVirtualMachine
--suppressPreviewFeatures True

以下螢幕擷取畫面是 Azure SQL 資料庫建議的輸出範例:

Screenshot of Azure SQL Database SKU tier and sizing recommendations shown in SQLAssessment console.

以下螢幕擷取畫面是 Azure SQL 受控執行個體建議的輸出範例:

Screenshot of Azure SQL Managed Instance SKU tier and size recommendations shown in console.

以下螢幕擷取畫面是 Azure VM 建議上的 SQL Server 輸出範例:

Screenshot of SQL Server on Azure VM SKU tier and size recommendations output shown in console.

SKU 建議的輸出會以 JSON 格式儲存為詳細報表及易讀的摘要 HTML 檔案。 輸出會涵蓋下列各區段:

  • 執行個體名稱:內部部署 SQL Server 執行個體的名稱。
  • 資料庫名稱:內部部署 SQL Server 資料庫的名稱。
  • SKU 建議:在所有效能相符 SKU 上,符合您工作負載及成本效益的最低 SKU 供應項目版本。
  • 建議原因:針對建議的每個層級,我們會提供驅動建議的原因和收集的資料值。

最終建議層和該層的組態值會反映查詢在 Azure 中執行所需的最低 SKU 版本,其成功率類似您的內部部署資料庫。

下一步