從命令列執行 Data Migration Assistant

如果使用 2.1 版和更新版本,在安裝 Data Migration Assistant 時,也會在 %ProgramFiles%\Microsoft Data Migration Assistant\ 中安裝 dmacmd.exe。 以自動模式使用 dmacmd.exe 評估資料庫,並將結果輸出為 JSON 或 CSV 檔案。 這個方法在評估多個資料庫或大型資料庫時特別實用。

注意

Dmacmd.exe 僅支援執行評量。 此時不支援移轉。

使用命令列介面 (CLI) 的評量

DmaCmd.exe /AssessmentName="string"
/AssessmentDatabases="connectionString1" \["connectionString2"\]
\[/AssessmentSourcePlatform="SourcePlatform"]
\[/AssessmentTargetPlatform="TargetPlatform"\]
/AssessmentEvaluateFeatureParity|/AssessmentEvaluateCompatibilityIssues
\[/AssessmentOverwriteResult\]
/AssessmentResultJson="file"|/AssessmentResultCsv="file"
引數 描述 必要 (是/否)
/help or /? 如何使用 dmacmd.exe 說明文字 N
/AssessmentName 評量專案的名稱 Y
/AssessmentDatabases 以空格分隔的連接字串清單。 資料庫名稱 (初始目錄) 區分大小寫。 Y
/AssessmentSourcePlatform 評量的來源平台:
評量的支援值:SqlOnPrem、RdsSqlServer(預設)
目標整備評量的支援值:SqlOnPrem、RdsSqlServer (預設)、Cassandra (預覽)
/AssessmentTargetPlatform 評量的目標平台:
評量的支援值:AzureSqlDatabase、ManagedSqlServer、SqlServer2012、SqlServer2014、SqlServer2016、SqlServerLinux2017 以及 SqlServerWindows2017 (預設)
目標整備評量的支援值:ManagedSqlServer (預設)、CosmosDB (預覽)
N
/AssessmentEvaluateFeatureParity 執行功能同位規則。 如果來源平台是 RdsSqlServer,則目標平台 AzureSqlDatabase 不支援功能同位評估 Y
(需要 AssessmentEvaluateCompatibilityIssues 或 AssessmentEvaluateFeatureParity。)
/AssessmentEvaluateCompatibilityIssues 執行相容性規則 Y
(需要 AssessmentEvaluateCompatibilityIssues 或 AssessmentEvaluateFeatureParity。)
/AssessmentOverwriteResult 覆寫結果檔案 N
/AssessmentResultJson JSON 結果檔案的完整路徑 Y
(需要 AssessmentResultJson 或 AssessmentResultCsv)
/AssessmentResultCsv CSV 結果檔案的完整路徑 Y
(需要 AssessmentResultJson 或 AssessmentResultCsv)
/AssessmentResultDma dma 結果檔案的完整路徑 N
/Action 使用 SkuRecommendation 取得 SKU 建議。
使用 AssessmentTargetReadiness 執行目標整備評量。
使用 AzureMigrateUpload 上傳 AzzessmentResultInputFolder 中所有的 DMA 評量檔案,以大量上傳至 Azure Migrate.Action 類型使用量/Action= AzureMigrateUpload
N
/SourceConnections 以空格分隔的連接字串清單。 資料庫名稱 (初始目錄) 為選用。 如果未提供任何資料庫名稱,則會評估來源上的所有資料庫。 Y
(如果動作為「AssessTargetReadiness」,則為必要)
/TargetReadinessConfiguration XML 檔案的完整路徑,描述名稱、來源連線和結果檔案的值。 Y
(需要 TargetReadinessConfiguration 或 SourceConnections)
/FeatureDiscoveryReportJson 功能探索 JSON 報表的路徑。 如果產生此檔案,則可將其用來再次執行目標整備評量,不需要連線至來源。 N
/ImportFeatureDiscoveryReportJson 稍早建立的功能探索 JSON 報表路徑。 會使用此檔案,而不是來源連線。 N
/EnableAssessmentUploadToAzureMigrate 啟用將評量結果上傳和發佈至 Azure Migrate N
/AzureCloudEnvironment 選取要連線的 Azure 雲端環境,預設為 Azure 公用雲端。 支援的值:Azure (預設)、AzureChina、AzureGermany、AzureUSGovernment。 N
/SubscriptionId Azure 訂用帳戶識別碼。 Y
(如果指定 EnableAssessmentUploadToAzureMigrate 引數,則為必要)
/AzureMigrateProjectName 要上傳評量結果的 Azure Migrate 專案名稱。 Y
(如果指定 EnableAssessmentUploadToAzureMigrate 引數,則為必要)
/ResourceGroupName Azure Migrate 資源群組名稱。 Y
(如果指定 EnableAssessmentUploadToAzureMigrate 引數,則為必要)
/AssessmentResultInputFolder 包含要上傳至 Azure Migrate 的 .DMA 評量檔案之輸入資料夾路徑。 Y
(如果動作為 AzureMigrateUpload,則為必要)

使用 CLI 的評量範例

Dmacmd.exe

Dmacmd.exe /? or DmaCmd.exe /help

使用 Windows 驗證和執行相容性規則的單一資料庫評量

DmaCmd.exe /AssessmentName="TestAssessment"
/AssessmentDatabases="Server=SQLServerInstanceName;Initial
Catalog=DatabaseName;Integrated Security=true"
/AssessmentEvaluateCompatibilityIssues /AssessmentOverwriteResult
/AssessmentResultJson="C:\\temp\\Results\\AssessmentReport.json"

使用 SQL Server 驗證和執行功能同位的單一資料庫評量

DmaCmd.exe /AssessmentName="TestAssessment"
/AssessmentDatabases="Server=SQLServerInstanceName;Initial
Catalog=DatabaseName;User Id=myUsername;Password=myPassword;"
/AssessmentEvaluateFeatureParity /AssessmentOverwriteResult
/AssessmentResultCsv="C:\\temp\\Results\\AssessmentReport.csv"

目標平台 SQL Server 2012 的單一資料庫評量,將結果儲存成 .json 和 .csv 檔案

DmaCmd.exe /AssessmentName="TestAssessment"
/AssessmentDatabases="Server=SQLServerInstanceName;Initial
Catalog=DatabaseName;Integrated Security=true"
/AssessmentTargetPlatform="SqlServer2012"
/AssessmentEvaluateFeatureParity /AssessmentOverwriteResult
/AssessmentResultJson="C:\\temp\\Results\\AssessmentReport.json"
/AssessmentResultCsv="C:\\temp\\Results\\AssessmentReport.csv"

目標平台 Azure SQL Database 的單一資料庫評量,將結果儲存成 .json 和 .csv 檔案

DmaCmd.exe /AssessmentName="TestAssessment" 
/AssessmentDatabases="Server=SQLServerInstanceName;Initial
Catalog=DatabaseName;Integrated Security=true"
/AssessmentTargetPlatform="AzureSqlDatabaseV12"
/AssessmentEvaluateCompatibilityIssues /AssessmentEvaluateFeatureParity
/AssessmentOverwriteResult 
/AssessmentResultCsv="C:\\temp\\AssessmentReport.csv" 
/AssessmentResultJson="C:\\temp\\AssessmentReport.json"

多個資料庫評量

DmaCmd.exe /AssessmentName="TestAssessment"
/AssessmentDatabases="Server=SQLServerInstanceName1;Initial
Catalog=DatabaseName1;Integrated Security=true"
"Server=SQLServerInstanceName1;Initial Catalog=DatabaseName2;Integrated
Security=true" "Server=SQLServerInstanceName2;Initial
Catalog=DatabaseName3;Integrated Security=true"
/AssessmentTargetPlatform="SqlServer2016"
/AssessmentEvaluateCompatibilityIssues /AssessmentOverwriteResult
/AssessmentResultCsv="C:\\temp\\Results\\AssessmentReport.csv"
/AssessmentResultJson="C:\\Results\\test2016.json"

使用 Windows 驗證的單一資料庫目標整備評量

DmaCmd.exe /Action=AssessTargetReadiness 
/AssessmentName="TestAssessment" 
/SourceConnections="Server=SQLServerInstanceName;Initial Catalog=DatabaseName;Integrated Security=true" 
/AssessmentOverwriteResult 
/AssessmentResultJson="C:\temp\Results\AssessmentReport.json"

使用 SQL Server 驗證的單一資料庫目標整備評量

DmaCmd.exe /Action=AssessTargetReadiness 
/AssessmentName="TestAssessment" 
/SourceConnections="Server=SQLServerInstanceName;Initial Catalog=DatabaseName;User Id=myUsername;Password=myPassword;" /AssessmentEvaluateFeatureParity 
/AssessmentOverwriteResult 
/AssessmentResultJson="C:\temp\Results\AssessmentReport.json" 

目標平台 Azure SQL Database 的單一資料庫評量,將結果儲存成 .json 和 .csv 檔案

DmaCmd.exe /AssessmentName="TestAssessment" 
/AssessmentDatabases="Server=SQLServerInstanceName;Initial
Catalog=DatabaseName;Integrated Security=true"
/AssessmentSourcePlatform="SqlOnPrem"
/AssessmentTargetPlatform="AzureSqlDatabase"
/AssessmentEvaluateCompatibilityIssues /AssessmentEvaluateFeatureParity
/AssessmentOverwriteResult 
/AssessmentResultCsv="C:\\temp\\AssessmentReport.csv" 
/AssessmentResultJson="C:\\temp\\AssessmentReport.json"

多個資料庫目標整備評量

DmaCmd.exe /Action=AssessTargetReadiness
/AssessmentName="TestAssessment"
/AssessmentSourcePlatform=SourcePlatform
/AssessmentTargetPlatform=TargetPlatform
/SourceConnections="Server=SQLServerInstanceName1;Initial Catalog=DatabaseName1;Integrated Security=true" "Server=SQLServerInstanceName1;Initial Catalog=DatabaseName2;Integrated Security=true" "Server=SQLServerInstanceName2;Initial Catalog=DatabaseName3;Integrated Security=true"
/AssessmentOverwriteResult  
/AssessmentResultJson="C:\Results\test2016.json"

(/AssessmentSourcePlatform and /AssessmentTargetPlatform are optional.)

使用 Windows 驗證,針對伺服器上的所有資料庫進行目標整備評量

DmaCmd.exe /Action=AssessTargetReadiness
/AssessmentName="TestAssessment"
/SourceConnections="Server=SQLServerInstanceName;Integrated Security=true"
/AssessmentOverwriteResult
/AssessmentResultJson="C:\temp\Results\AssessmentReport.json"

匯入稍早建立的功能探索報表,以進行目標整備評量

DmaCmd.exe /Action=AssessTargetReadiness
/AssessmentName="TestAssessment"
/ImportFeatureDiscoveryReportJson="c:\temp\feature_report.json" 
/AssessmentOverwriteResult
/AssessmentResultJson="C:\temp\Results\AssessmentReport.json"

提供組態檔,以進行目標整備評量

DmaCmd.exe /Action=AssessTargetReadiness 
/TargetReadinessConfiguration=.\Config.xml

使用來源連線時的組態檔內容:

<?xml version="1.0" encoding="utf-8" ?>
<TargetReadinessConfiguration xmlns="http://microsoft.com/schemas/SqlServer/Advisor/TargetReadinessConfiguration">
  <AssessmentName>name</AssessmentName>
  <SourcePlatform>Source Platform</SourcePlatform> <!-- Optional. The default is SqlOnPrem -->
  <TargetPlatform>TargetPlatform</TargetPlatform> <!-- Optional. The default is ManagedSqlServer -->
  <SourceConnections>
    <SourceConnection>connection string 1</SourceConnection>
    <SourceConnection>connection string 2</SourceConnection>
    <!-- ... -->
    <SourceConnection>connection string n</SourceConnection>
  </SourceConnections>
  <AssessmentResultJson>path\to\file.json</AssessmentResultJson>
  <FeatureDiscoveryReportJson>path\to\featurediscoveryreport.json</FeatureDiscoveryReportJson>
  <OverwriteResult>true</OverwriteResult> <!-- or false -->
</TargetReadinessConfiguration>

匯入功能探索報表時的組態檔內容:

<TargetReadinessConfiguration xmlns="http://microsoft.com/schemas/SqlServer/Advisor/TargetReadinessConfiguration">
  <AssessmentName>name</AssessmentName>
  <ImportFeatureDiscoveryReportJson>path\to\featurediscoveryfile.json</ImportFeatureDiscoveryReportJson>
  <AssessmentResultJson>path\to\resultfile.json</AssessmentResultJson>
  <OverwriteResult>true</OverwriteResult><!-- or false -->
</TargetReadinessConfiguration>

評估並上傳至 Azure 公用雲端 (預設) 中的 Azure Migrate

DmaCmd.exe
/Action="Assess" 
/AssessmentSourcePlatform=SqlOnPrem 
/AssessmentTargetPlatform=ManagedSqlServer
/AssessmentEvaluateCompatibilityIssues 
/AssessmentEvaluateFeatureParity 
/AssessmentOverwriteResult 
/AssessmentName="assess-myDatabase"
/AssessmentDatabases="Server=myServer;Initial Catalog=myDatabase;Integrated Security=true" 
/AssessmentResultDma="C:\assessments\results\assess-1.dma"
/SubscriptionId="Subscription Id" 
/AzureMigrateProjectName="Azure Migrate project ame" 
/ResourceGroupName="Resource Group name" 
/AzureAuthenticationInteractiveAuthentication
/AzureAuthenticationTenantId="Azure Tenant Id"
/EnableAssessmentUploadToAzureMigrate

將 DMA 評量檔案批次上傳至 Azure 公用雲端 (預設) 中的 Azure Migrate

DmaCmd.exe 
/Action="AzureMigrateUpload" 
/AssessmentResultInputFolder="C:\assessments\results" 
/SubscriptionId="Subscription Id" 
/AzureMigrateProjectName="Azure Migrate project name" 
/ResourceGroupName="Resource Group name" 
/AzureAuthenticationInteractiveAuthentication
/AzureAuthenticationTenantId="Azure Tenant Id"
/EnableAssessmentUploadToAzureMigrate

使用 CLI 的 Azure SQL Database/Azure SQL 受控執行個體/Azure VM SKU 建議上的 SQL Server

如果使用 5.4 版和更新版本,在安裝 Data Migration Assistant 時,也會在 %ProgramFiles%\Microsoft Data Migration Assistant\SQLAssessmentConsole 中安裝 SqlAssessment.exe。 使用 SqlAssessment.exe 收集 SQL 執行個體在一段長時間中的效能資料,並將結果輸出成 JSON 或 CSV 檔案。

這些命令同時支援針對 Azure SQL Database 單一資料庫、Azure SQL 受控執行個體以及 Azure VM 部署選項上的 SQL Server 所提出的建議。

.\SqlAssessment.exe GetSkuRecommendation 
--outputFolder C:\Output 
--targetPlatform AzureSqlManagedInstance
引數 描述 必要 (是/否)
PerfDataCollection 開始收集效能資料。 Y
GetSkuRecommendation 執行已收集效能資料的彙總和分析,並判斷 SKU 建議。 Y
GetMetadata 執行目標 SQL 執行個體的中繼資料集合,包括伺服器執行個體的數目和屬性、資料庫和資料庫檔案、使用者定義物件等。完整報表會匯出成 MetadataReport.json Y
--outputFolder 將寫入/讀取效能資料、報表及記錄的資料夾。 N
(預設:目前的目錄)
--sqlConnectionStrings 目標 SQL 執行個體用引號括住的形式連接字串。 Y
--overwrite 是否要覆寫任何現有評量或 SKU 建議報表。 N
(預設:true)
--perfQueryIntervalInSec 查詢效能資料的間隔 (以秒為單位)。 N
(PerfDataCollection 動作特定。預設 30)
--staticQueryIntervalInSec 要查詢和保存靜態設定資料的間隔 (以秒為單位)。 N
(PerfDataCollection 動作特定。預設 30)
--numberOfIterations 在保存至檔案之前,要執行之效能資料收集的反覆項目數目。 N
(PerfDataCollection 動作特定。預設 20)
--perfQueryIntervalInSec 查詢效能資料的間隔 (以秒為單位)。 N
(GetSkuRecommendation 動作特定。這必須符合在效能資料收集期間最初使用的值。預設:30)
--targetPlatform SKU 建議的目標平台:AzureSqlDatabaseAzureSqlManagedInstanceAzureSqlVirtualMachineAny N
(GetSkuRecommendation 動作特定。預設:Any)
--targetSqlInstance SKU 建議做為目標的 SQL 執行個體名稱。 N
(GetSkuRecommendation 動作特定)
--targetPercentile 在彙總效能資料期間要使用的資料點百分位數。 N
(GetSkuRecommendation 動作特定。 僅用於基準 (非彈性) 策略。 預設:95)
--scalingFactor 在 SKU 建議期間使用的縮放比例 (緩和) 因素。 N
(GetSkuRecommendation 動作特定。預設:100)
--startTime 在彙總期間以 "YYYY-MM-DD HH:MM" 格式考慮的效能資料點 UTC 開始時間。 N
(GetSkuRecommendation 動作特定。 僅用於基準 (非彈性) 策略)
--endTime 在彙總期間以 "YYYY-MM-DD HH:MM" 格式考慮的效能資料點 UTC 結束時間 N
(GetSkuRecommendation 動作特定。 僅用於基準 (非彈性) 策略)
--elasticStrategy 是否根據統計資源使用方式分析,針對 SKU 建議使用彈性策略。 彈性策略目前適用於 Azure SQL Database 和 SQL 受控執行個體,尚不適用於 Azure VM 目標上的 SQL Server。 N
(GetSkuRecommendation 動作特定。預設:false)
--databaseAllowList 針對 SKU 建議包含資料庫名稱的空間分隔清單 N
(GetSkuRecommendation 動作特定。預設:null)
--databaseDenyList 針對 SKU 建議排除資料庫名稱的空間分隔清單。 只設定下列其中一個或兩者皆不設定:databaseAllowListdatabaseDenyList N
(GetSkuRecommendation 動作特定。預設:null)
--displayResult 是否要將 SKU 建議結果列印到主控台。 只設定下列其中一個或兩者皆不設定:databaseAllowListdatabaseDenyList N
(GetSkuRecommendation 動作特定。預設:true)

使用 CLI 的 SKU 評量範例

SqlAssessment.exe

SqlAssessment.exe --help

啟動內部部署 SQL Server 執行個體的資料收集流程

.\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

Azure SQL Database/Azure SQL 受控執行個體/Azure VM SKU 建議上的 SQL Server

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

Azure SQL 受控執行個體 SKU 建議,包含資料點和自訂縮放比例因素的特定彙總百分比

.\SqlAssessment.exe GetSkuRecommendation 
--outputFolder C:\Output 
--targetPlatform AzureSqlManagedInstance
--targetPercentile 90
--scalingFactor 80

包含自訂彙總時間表之 Azure VM SKU 建議上的 SQL Server

.\SqlAssessment.exe GetSkuRecommendation 
--outputFolder C:\Output 
--targetPlatform AzureSqlVirtualMachine
--startTime "2021-06-05 00:00"
--endTime "2021-06-07 00:00"

另請參閱