从命令行运行数据迁移助手

如果使用版本 2.1 及更高版本,安装数据迁移助手时,它还会在 %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"
参数 说明 必需 (Y/N)
/help or /? 如何使用 dmacmd.exe 帮助文本 N
/AssessmentName 评估项目的名称 Y
/AssessmentDatabases 以空格分隔的连接字符串列表。 数据库名称(初始目录)区分大小写。 Y
/AssessmentSourcePlatform 评估的源平台:
评估支持的值:SqlOnPrem、RdsSqlServer(默认)
目标就绪情况评估支持的值:SqlOnPrem、RdsSqlServer(默认)、Cassandra(预览)
N
/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 type usage /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 订阅 ID。 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 数据库的单一数据库评估,将结果保存到 .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 数据库的单一数据库评估,将结果保存到 .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

在 Azure 公有云中将 DMA 评估文件批量上传到 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 数据库/Azure SQL 托管实例/Azure VM 上的 SQL Server SKU 建议

如果使用版本 5.4 及更高版本,安装数据迁移助手时,它还会在 %ProgramFiles%\Microsoft Data Migration Assistant\SQLAssessmentConsole 中安装 SqlAssessment.exe。 使用 SqlAssessment.exe 收集 SQL 实例在较长时间内的性能数据,并将结果输出到 JSON 或 CSV 文件。

这些命令支持 Azure SQL 数据库单一数据库、Azure SQL 托管实例和 Azure VM 上的 SQL Server 部署选项的建议。

.\SqlAssessment.exe GetSkuRecommendation 
--outputFolder C:\Output 
--targetPlatform AzureSqlManagedInstance
参数 说明 必需 (Y/N)
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 聚合期间要考虑的性能数据点的 UTC 开始时间,采用 "YYYY-MM-DD HH:MM" 格式。 N
(特定于 GetSkuRecommendation 操作。 仅用于基线 [非弹性] 策略)
--endTime 聚合期间要考虑的性能数据点的 UTC 结束时间,采用 "YYYY-MM-DD HH:MM" 格式 N
(特定于 GetSkuRecommendation 操作。 仅用于基线 [非弹性] 策略)
--elasticStrategy 是否根据统计资源使用情况分析对 SKU 建议使用弹性策略。 弹性策略目前可用于 Azure SQL 数据库和 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 数据库/Azure SQL 托管实例/Azure VM 上的 SQL Server SKU 建议

.\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 上的 SQL Server SKU 建议,其中包含自定义聚合时间线

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

另请参阅