从命令行运行数据迁移助手
重要
数据迁移助手 (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 |
评估的源平台: 评估支持的值: 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 建议。使用 AssessTargetReadiness 执行目标就绪情况评估。使用 AzureMigrateUpload 上传 AssessmentResultInputFolder 中的所有 DMA 评估文件,以便批量上传到 Azure Migrate。 使用类型Action /Action=AzureMigrateUpload |
N |
/SourceConnections |
以空格分隔的连接字符串列表。 数据库名称(初始目录)是可选的。 如果未提供数据库名称,则会评估源上的所有数据库。 | Y (如果 Action 为 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 (如果 Action 为 AzureMigrateUpload ,则需要) |
使用 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 建议的目标平台:AzureSqlDatabase 、AzureSqlManagedInstance 、AzureSqlVirtualMachine 或 Any 。 |
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 建议中要排除的数据库名称的空格分隔列表。 仅设置以下一项或两项均不设置:databaseAllowList 、databaseDenyList |
N (特定于 GetSkuRecommendation 操作。默认值:null ) |
--displayResult |
是否将 SKU 建议结果输出到控制台。 仅设置以下一项或两项均不设置:databaseAllowList 、databaseDenyList |
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"