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

重要

数据迁移助手 (DMA) 已弃用。 有关从 SQL Server 迁移到 Azure SQL 的方式选项信息,请参阅从 SQL Server 迁移到 Azure SQL 的方式选项

如果使用的是版本 2.1 或更高版本,安装数据迁移助手时,它还会在 %ProgramFiles%\Microsoft Data Migration Assistant 中安装 dmacmd.exe。 使用 DMACMD 在无人参与模式下评估数据库,并将结果输出到 JSON 或 CSV 文件。 此方法在评估多个数据库或大型数据库时特别有用。

DMACMD 仅支持运行评估。 目前不支持迁移。

使用命令行接口 (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 评估的源平台:
评估支持的值:SqlOnPremRdsSqlServer(默认值)
目标就绪情况评估支持的值:SqlOnPremRdsSqlServer(默认值)、Cassandra(预览)
N
/AssessmentTargetPlatform 评估的目标平台:
评估支持的值:AzureSqlDatabaseManagedSqlServerSqlServer2012SqlServer2014SqlServer2016SqlServerLinux2017SqlServerWindows2017(默认值)
目标就绪情况评估支持的值:ManagedSqlServer(默认值)、CosmosDB(预览)
N
/AssessmentEvaluateFeatureParity 运行功能奇偶一致性规则。 如果源平台为 RdsSqlServer,则目标平台 AzureSqlDatabase 不支持功能奇偶一致性评估 Y
(需要 AssessmentEvaluateCompatibilityIssues 或 AssessmentEvaluateFeatureParity。)
/AssessmentEvaluateCompatibilityIssues 运行兼容性规则 Y
(需要 AssessmentEvaluateCompatibilityIssuesAssessmentEvaluateFeatureParity。)
/AssessmentOverwriteResult 覆盖结果文件 N
/AssessmentResultJson JSON 结果文件的完整路径 Y
(需要 AssessmentResultJsonAssessmentResultCsv
/AssessmentResultCsv CSV 结果文件的完整路径 Y
(需要 AssessmentResultJsonAssessmentResultCsv
/AssessmentResultDma .dma 结果文件的完整路径 N
/Action 使用 SkuRecommendation 获取 SKU 建议。
使用 AssessTargetReadiness 执行目标就绪情况评估。
使用 AzureMigrateUpload 上传 AssessmentResultInputFolder 中的所有 DMA 评估文件,以便批量上传到 Azure Migrate。 使用类型Action/Action=AzureMigrateUpload
N
/SourceConnections 以空格分隔的连接字符串列表。 数据库名称(初始目录)是可选的。 如果未提供数据库名称,则会评估源上的所有数据库。 Y
(如果 ActionAssessTargetReadiness,则需要)
/TargetReadinessConfiguration 描述名称、源连接和结果文件值的 XML 文件的完整路径。 Y
(需要 TargetReadinessConfigurationSourceConnections
/FeatureDiscoveryReportJson 功能发现 JSON 报表的路径。 如果生成此文件,则它可用于再次运行目标就绪情况评估,而无需连接到源。 N
/ImportFeatureDiscoveryReportJson 之前创建的功能发现 JSON 报表的路径。 会使用此文件,而不是源连接。 N
/EnableAssessmentUploadToAzureMigrate 允许将评估结果上传和发布到 Azure Migrate N
/AzureCloudEnvironment 选择要连接到的 Azure 云环境,默认为 Azure 公有云。 支持的值:Azure(默认值)、AzureChinaAzureGermanyAzureUSGovernment N
/SubscriptionId Azure 订阅 ID。 Y
(如果指定了 EnableAssessmentUploadToAzureMigrate 参数,则需要)
/AzureMigrateProjectName 要将评估结果上传到的 Azure Migrate 项目名称。 Y
(如果指定了 EnableAssessmentUploadToAzureMigrate 参数,则需要)
/ResourceGroupName Azure Migrate 资源组名称。 Y
(如果指定了 EnableAssessmentUploadToAzureMigrate 参数,则需要)
/AssessmentResultInputFolder 包含要上传到 Azure Migrate 的 .dma 评估文件的输入文件夹路径。 Y
(如果 ActionAzureMigrateUpload,则需要)

使用 CLI 评估的示例

DMACMD

dmacmd.exe /?

或:

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/AssessmentTargetPlatform 都是可选项。)

使用 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"