类型 | 说明 |
源库限制 | 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。 待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。 如迁移对象为表级别,且需进行编辑(如表列名映射),则单次迁移任务仅支持迁移至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待迁移的表,分批配置多个任务,或者配置整库的迁移任务。 单次迁移任务仅支持迁移至多10个数据库。当超出数量限制,会出现稳定性和性能问题的风险,此时建议您拆分待迁移的表,分批配置任务。 如需进行增量迁移,数据日志: 需开启,备份模式设置为Full,且已成功执行过全量物理备份。 如为增量迁移任务,DTS要求源数据库的数据日志保存24小时以上,如为全量迁移和增量迁移任务,DTS要求源数据库的数据日志至少保留7天以上(您可在全量迁移完成后将数据日志保存时间设置为24小时以上),否则DTS可能因无法获取数据日志而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的数据日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。
若源库待迁移的表需要开启CDC,则需满足以下条件,否则预检查将会失败。 sys.sysservers视图的srvname字段与SERVERPROPERTY函数返回值保持一致。 若源库是自建SQL Server,则数据库所有者需是sa;若源库是RDS SQL Server,则数据库所有者需是sqlsa。 若源库是企业版,则需为2008及以上版本。 若源库是标准版,则需为2016SP1及以上版本。 若源库为SQL Server 2017版(包括标准版和企业版),建议升级版本。
DTS使用fn_log函数获取源库日志,而该函数有一定的性能瓶颈,请不要过早清理源库日志,否则可能会导致DTS任务失败。 源库的操作限制: 若源库为只读实例,则不支持迁移DDL操作。 若源库为Azure SQL Database,则一个迁移实例仅支持迁移一个数据库。 若源库为RDS SQL Server,且迁移实例包含增量迁移任务,为保障迁移实例稳定运行,请确保已关闭透明数据加密TDE(Transparent Data Encryption)功能。更多信息,请参见关闭TDE。 在混合式日志解析模式下,源库不支持连续执行(时间间隔小于10分钟)多个加减列操作。例如,连续执行如下SQL会导致任务报错。 ALTER TABLE test_table DROP COLUMN Flag;
ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
若源库为Web版的RDS SQL Server,则在配置任务时SQLServer增量同步模式需选择为解析源库日志做增量同步(不支持堆表)。 建议在全量数据迁移任务运行期间,确保源库的事务处理模式参数READ_COMMITTED_SNAPSHOT 为启用状态,以避免因共享锁(Shared Lock)对数据写入产生影响。否则,可能会导致数据不一致、实例运行失败等异常情况。由此引发的异常情况,不在DTS的SLA保障范围内。
|
其他限制 | 不支持迁移CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY和GEOGRAPHY类型的数据。 若在对象配置阶段将SQLServer增量同步模式选择为解析源库日志做增量同步(不支持堆表),则待迁移的表需具备聚集索引,且聚集索引中需包含主键列;待迁移的表不支持堆表、无主键表、压缩表、含计算列表。在混合式日志解析模式下,没有如上限制。 若在对象配置阶段将SQLServer增量同步模式选择为非堆表用日志解析增量同步,堆表用CDC增量同步(混合式日志解析),则DTS的增量迁移依赖CDC组件,因此请确保源库CDC作业正常运行,否则会导致DTS任务失败。 若在对象配置阶段将SQLServer增量同步模式选择为轮询查询CDC实例做增量同步,则还有如下限制: DTS实例使用的源库账号需具备开启CDC的权限。开启库级别CDC需要使用sysadmin角色权限的账号,开启表级别CDC需要高权限账号。 DTS是通过轮询方式去源库查询每张表的CDC实例(CDC Instance)以获取增量数据,因此源库待迁移表的数量不能超过1000张,否则可能会导致任务延迟或不稳定。 不支持连续执行加减列操作(一分钟内执行超过两次加列或减列的DDL),否则可能会导致任务失败。 不支持对源库CDC实例(CDC Instance)做变更操作,否则可能会导致任务失败或数据丢失。
若需跨版本迁移,请提前确认兼容性。 为保障增量数据迁移延迟的准确性,解析源端日志做增量同步模式,DTS会在源库中创建触发器dts_cdc_sync_ddl、心跳表dts_sync_progress、DDL存储表dts_cdc_ddl_history;混合式增量同步模式,DTS会在源库中创建触发器dts_cdc_sync_ddl、心跳表dts_sync_progress、DDL存储表dts_cdc_ddl_history以及会开启库级别CDC和部分表CDC,建议源端开启CDC的表数据变更量不超过1000 RPS。 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移。否则全量数据迁移时DTS占用源和目标库一定读写资源,可能会导致数据库的负载上升。 由于全量数据迁移会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大。 请确认DTS对数据类型为FLOAT或DOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION) 来读取这两类列的值。如果没有明确定义其精度,DTS对FLOAT的迁移精度为38位,对DOUBLE的迁移精度为308位。 DTS会尝试恢复七天之内迁移失败任务。因此业务切换至目标实例前,请务必结束或释放该任务,或者将DTS访问目标实例账号的写权限用revoke 命令回收掉。避免该任务被自动恢复后,源端数据覆盖目标实例的数据。 若迁移任务包含增量数据迁移,则不支持重建索引操作,否则可能造成任务失败,甚至数据丢失。 若单次迁移任务中开启CDC的表数量大于1000,则预检查会失败。 若实例包含增量任务,且开启CDC的表需要写入的单字段数据超过64 KB,则必须提前使用exec sp_configure 'max text repl size', -1; 命令调整源库的配置。
说明 CDC作业默认最大能处理的单字段长度为64 KB。 如需进行增量迁移,请禁用目标库中已启用的触发器和外键,否则会导致迁移任务失败。 若实例运行失败,DTS技术支持人员将在8小时内尝试恢复该实例。在恢复失败实例的过程中,可能会对该实例进行重启、调整参数等操作。
说明 在调整参数时,仅会修改实例的参数,不会对数据库中的参数进行修改。可能修改的参数,包括但不限于修改实例参数中的参数。
|
特殊情况 | 源实例为RDS SQL Server时,DTS会在源RDS SQL Server实例中创建一个rdsdt_dtsacct 账号用于数据迁移,请勿在任务运行过程中对该账号进行删除或密码修改操作,否则可能会导致任务失败。具体详情,请参见系统账号说明。 目标实例为RDS SQL Server时,DTS会自动在RDS SQL Server中创建数据库,如果待迁移的数据库名称不符合RDS SQL Server的定义规范,您需要在配置迁移任务之前在RDS SQL Server中创建数据库。相关操作,请参见创建数据库。
|