自建SQL Server迁移至RDS SQL Server

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍如何通过DTS控制台将自建SQL Server数据库迁移至阿里云RDS SQL Server。支持灵活配置库表结构迁移、全量数据迁移和增量数据迁移,同时配置这三种迁移类型可在应用不停服的情况下,平滑完成数据库迁移。

前提条件

已创建存储空间大于源库的目标RDS SQL Server实例。若空间不足,请提前提升实例空间

注意事项

迁移前请务必关注如下核心注意事项,忽略可能导致任务失败或报错:

  • 库数量限制:单次迁移库数量不能超过10个,否则会导致稳定性和性能风险。

  • 表数量限制:包含增量迁移时,源库待同步表的数量不能超过1000张,否则可能导致任务延迟或不稳定。

  • 源库操作限制:在库表结构迁移和全量迁移阶段,请勿执行DDL操作(如修改库或表结构),否则会导致任务失败。

  • 表结构要求:待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能导致目标库出现重复数据。

  • 外键和触发器:若迁移任务包含增量数据迁移,需禁用目标库中已启用的触发器和外键,否则可能造成任务失败或数据丢失。

  • 数据库名称规范:如果待迁移的数据库名称不符合RDS SQL Server的定义规范,需提前在RDS SQL Server手动创建数据库,否则任务可能无法正常运行。

  • 数据日志保存时间:增量迁移任务要求源库的数据日志保存24小时以上;全量+增量迁移任务要求数据日志至少保留7天以上,否则可能导致任务失败或数据不一致。

点击展开查询全部使用限制及注意事项

源库限制

  • 带宽要求

    源库服务器需具备足够出口带宽,否则会影响数据迁移速率。

  • 表结构要求

    待迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能导致目标数据库出现重复数据。

  • 迁移数量限制

    • 表级别迁移(且需编辑列名映射):单次任务最多支持1000张表。超出限制时需拆分任务或配置整库迁移,否则会请求报错。

    • 数据库数量限制:单次任务最多支持10个数据库。超出限制时需拆分任务,否则会出现稳定性和性能问题。

  • 增量迁移日志要求

    • 数据日志需开启,备份模式设置为FULL,且执行过相关备份

    • 数据日志保存时间:增量迁移任务要求源库的数据日志保存24小时以上;全量+增量迁移任务要求数据日志至少保留7天以上,否则可能导致任务失败或数据不一致。

      重要

      若因您设置的数据日志保存时间低于DTS要求的时间而导致问题,此类情况将不在DTSSLA保障范围内。

  • CDC开启条件

    若源库待迁移的表需要开启CDC,则需满足以下条件,否则预检查将会失败:

    • sys.sysservers视图的srvname字段与SERVERPROPERTY函数返回值保持一致。

    • 若源库是自建SQL Server,则数据库所有者需是sa。

    • 源库版本要求:

      • 企业版:需为2008及以上版本。

      • 标准版:需为2016 SP1及以上版本。

      • SQL Server 2017版(包括标准版和企业版):建议升级版本。

  • 日志清理时间

    DTS通过fn_log函数获取源库日志,该函数存在性能瓶颈,请勿过早清理源库日志,以免导致任务失败。

其他限制

  • 不支持的数据类型

    不支持迁移CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRYGEOGRAPHY类型的数据。

  • 增量迁移的其他限制

    • 不支持重建索引操作,否则可能导致任务失败或数据丢失。已开启CDC的表不支持主键相关变更。

    • 单次任务中开启CDC的表数量超出DTS支持的最大限制会导致预检查失败。

    • 若实例包含增量任务且CDC表需写入单字段数据超64 KB,则需提前使用exec sp_configure 'max text repl size', -1;调整源库配置。CDC作业默认最大处理单字段长度为64 KB。

  • 目标库限制

    如需增量迁移,请禁用目标库中已启用的触发器和外键,否则任务失败。

  • 多个迁移实例

    同一SQL Server数据库作为源库的多个迁移实例,其增量数据采集模块相互独立。

  • 实例恢复

    • 若实例运行失败,DTS技术支持人员将在8小时内尝试恢复。

    • 恢复过程中可能重启实例或调整参数,但仅修改实例参数,不会修改数据库参数。

注意事项

  • 库表结构迁移与全量迁移阶段的注意事项

    • DDL操作限制:禁止在库表结构迁移和全量迁移阶段执行库或表结构变更的DDL操作,否则会导致数据迁移任务失败。

    • 只读实例限制:若源库为只读实例,则不支持迁移DDL操作。

    • 混合式日志解析模式下的DDL限制:源库不支持连续执行多个加减列操作(时间间隔小于10分钟)。例如,连续执行如下SQL会导致任务报错:

      ALTER TABLE test_table DROP COLUMN Flag;
      ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 跨版本迁移

    若需跨版本迁移,请提前确认兼容性。

  • DTS在源库中的操作

    • 解析源端日志做增量同步模式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。

  • 数据一致性和迁移稳定性

    • 全量数据迁移期间的数据一致性:如仅执行全量数据迁移,请勿向源实例写入新的数据,否则会导致源和目标数据不一致。建议选择结构迁移、全量数据迁移和增量数据迁移以保持实时一致性。

    • 事务处理模式参数要求:建议在全量数据迁移任务运行期间,确保源库的事务处理模式参数READ_COMMITTED_SNAPSHOT为启用状态,以避免因共享锁(Shared Lock)对数据写入产生影响。否则,可能会导致数据不一致、实例运行失败等异常情况。由此引发的异常情况,不在DTSSLA保障范围内。

    • 任务恢复机制:DTS会尝试恢复七天内迁移失败的任务。因此,在业务切换至目标实例前,请务必结束或释放该任务,或者通过REVOKE命令回收DTS访问目标实例账号的写权限,避免任务被自动恢复后导致源端数据覆盖目标实例数据。

  • 性能与资源注意事项

    • 迁移前的评估:执行迁移前需评估源库和目标库性能,建议在业务低峰期执行迁移。

    • 迁移期间的资源占用:全量迁移时,DTS会占用源库和目标库的读写资源,可能导致数据库负载上升。

    • 迁移后的存储空间变化:全量迁移完成后,目标库表的存储空间可能比源库大,原因是并发INSERT操作导致碎片增加。

  • FLOATDOUBLE列精度说明

    请确认DTS对数据类型为FLOATDOUBLE的列的迁移精度是否符合业务预期。DTS会通过ROUND(COLUMN,PRECISION)来读取这两类列的值。如果没有明确定义其精度,DTSFLOAT的迁移精度为38位,对DOUBLE的迁移精度为308位。

  • 数据库名称规范

    如果待迁移的数据库名称不符合RDS SQL Server的定义规范,需提前在RDS SQL Server手动创建数据库,否则任务可能无法正常运行。

费用说明

迁移类型

链路配置费用

公网流量费用

结构迁移和全量数据迁移

不收费。

当目标库的接入方式公网IP时收取公网流量费用,详情请参见计费概述

增量数据迁移

收费,详情请参见计费概述

数据库账号的权限要求

为顺利完成数据迁移任务,请确保源库和目标库的数据库账号具备以下权限:

说明

数据库

结构迁移

全量迁移

增量迁移

自建SQL Server数据库

SELECT权限

SELECT权限

sysadmin

RDS SQL Server实例

读写权限

准备工作

如需进行增量迁移,在正式配置数据迁移任务前,需要在自建SQL Server数据库上将指定数据库的恢复模式设置为完整模式(FULL),确保事务日志被完整记录,并通过逻辑备份和日志备份分别保存全量数据和增量数据,为后续的数据迁移提供基础。

重要

若有多个数据库需要迁移,您需要重复执行准备工作中的步骤1~步骤3,否则可能会导致数据不一致。

  1. 在自建SQL Server数据库中执行如下命令,将待迁移的数据库恢复模式修改为完整模式。

    use master;
    GO
    ALTER DATABASE <待迁移的数据库名称> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE;
    GO

    示例如下:

    use master;
    GO
    ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE;
    GO
  2. 执行如下命令,将待迁移的数据库进行逻辑备份。若您已进行过逻辑备份,可跳过本步骤。

    BACKUP DATABASE <待迁移的数据库名称> TO DISK='<指定备份文件存储的路径和文件名>';
    GO

    示例如下:

    BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak';
    GO
  3. 执行如下命令,将待迁移的数据库日志进行备份。

    BACKUP LOG <待迁移的数据库名称> to DISK='<指定备份文件存储的路径和文件名>' WITH init;
    GO

    示例如下:

    BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH init;
    GO

操作步骤

  1. 访问数据传输服务DTS控制台

  2. 在左侧导航栏单击数据迁移,在上方选择地域。

  3. 单击创建任务,配置源库和目标库信息。

    类别

    配置

    说明

    任务名称

    请配置具有业务意义的名称(无唯一性要求),便于后续识别;也可保持系统自动生成的任务名称。

    源库信息

    选择已有连接信息

    若您已将源库信息录入DTS数据连接管理页面,可在此直接选择已录入的数据库,后续可免去手动输出源库信息。

    数据库类型

    选择SQL Server

    接入方式

    选择公网IP

    说明

    当选择为自建数据库时,您还需要执行相应的准备工作

    实例地区

    选择自建SQL Server数据库所属地域。

    主机名或IP地址

    填入自建SQL Server数据库的访问地址,本案例中填入公网地址。

    端口

    填入自建SQL Server数据库的服务端口,默认为1433

    数据库账号

    填入自建SQL Server的数据库账号,权限要求请参见数据库账号的权限要求

    数据库密码

    填入该数据库账号对应的密码。

    连接方式

    • 若源库未开启SSL加密,请选择非加密连接

    • 若源库已开启SSL加密,请选择SSL安全连接,DTS默认信任服务端证书。

    目标库信息

    选择已有连接信息

    若您已将目标库信息录入DTS数据连接管理页面,可在此直接选择已录入的数据库,后续可免去手动输出目标库信息。

    数据库类型

    选择SQL Server

    接入方式

    选择云实例

    实例地区

    选择目标RDS SQL Server实例所属地域。

    实例ID

    选择目标RDS SQL Server实例ID。

    数据库账号

    填入目标RDS SQL Server实例的数据库账号,权限要求请参见数据库账号的权限要求

    数据库密码

    填入该数据库账号对应的密码。

    连接方式

    • 若目标库未开启SSL加密,请选择非加密连接

    • 若目标库已开启SSL加密,请选择SSL安全连接,DTS默认信任服务端证书。

  4. 配置完成后,在页面下方单击测试连接以进行下一步,并在弹出的DTS服务器访问授权对话框单击测试连接

    重要

    请确保已将DTS服务的IP地址段添加至源库的安全设置中,以允许DTS服务器的访问。

  5. 配置任务对象。

    1. 对象配置页面,配置待迁移的对象。

      配置

      说明

      迁移类型

      • 若需进行全量迁移:建议选中库表结构迁移全量迁移

      • 若需进行不停机迁移:建议选中库表结构迁移全量迁移增量迁移

      说明

      源库触发器迁移方式

      请按需选择迁移触发器的方式,若您待迁移的对象不涉及触发器,则无需配置。更多信息,请参见配置同步或迁移触发器的方式

      说明

      仅当迁移类型同时勾选库表结构迁移增量迁移时才可以配置。

      SQLServer增量同步模式

      • 非堆表用日志解析增量同步,堆表用CDC增量同步(混合式日志解析)

        使用限制

        • DTS增量迁移依赖CDC组件,请确保源库CDC作业正常运行,否则任务失败。

        • CDC增量数据默认保留3天,建议使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;调整保存时间。<time>单位为分钟;若源库单表日均增量变更SQL超一千万条,建议设置为1440。

        • 单次迁移任务中开启CDC的表数量不超过1000,否则可能导致延迟或不稳定。

        • 增量迁移前置模块会开启源库CDC,期间由于SQL Server数据库内核自身的限制,会出现短暂锁表现象。

        • DTS会在源库中创建触发器dts_cdc_sync_ddl、心跳表dts_sync_progress、DDL存储表dts_cdc_ddl_history以及会开启库级别CDC和部分表CDC。

        • 不支持在源库对开启CDC的表执行SELECT INTO、TRUNCATERENAME COLUMN语句,DTS在源库中创建的触发器不允许手动删除。

        优势

        • 支持源库堆表、无主键表、压缩表、含计算列表等场景。

        • 链路稳定性较高。能拿到完整的DDL语句,DDL场景支持丰富。

      • 解析源库日志做增量同步(不支持堆表)

        使用限制

        • 待迁移表需具备聚集索引,且聚集索引中需包含主键列。

        • 不支持堆表、无主键表、压缩表、含计算列表等场景。您可以执行如下SQL检查源库是否存在这些场景的表:

          1. 检查源库堆表信息:

            SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0);
          2. 检查无主键表信息:

            SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK');
          3. 检查源库聚集索引列不包含的主键列信息:

            SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter);
          4. 检查源库压缩表信息:

            SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0;
          5. 检查包含计算列表信息:

            SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1);

        优势

        对源库无侵入。

      • 轮询查询CDC实例做增量同步

        使用限制

        • 源库账号需具备开启CDC权限:库级别CDCsysadmin角色权限账号;表级别CDC需高权限账号。

        • 聚集列存储索引表不支持开启CDC。

        • 增量迁移前置模块会开启源库CDC,期间由于SQL Server数据库内核自身的限制,会出现短暂锁表现象。

        • 源库待迁移表数量不能超过1000,否则可能导致延迟或不稳定。

        • CDC增量数据默认保留3天,建议使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;调整保存时间。<time>单位为分钟;若单表日均增量变更SQL超一千万条,建议设置为1440。

        • 不支持连续执行加减列操作(一分钟内超两次DDL),否则可能导致任务失败。

        • 不支持对源库CDC实例进行变更操作,否则可能导致任务失败或数据丢失。

        优势

        • 源库为Amazon RDS for SQL Server、Azure SQL Database、Azure SQL Managed Instance、Azure SQL Server on Virtual Machine、Google Cloud SQL for SQL Server等时支持全量和增量迁移。

        • 使用SQL Server原生CDC组件获取增量数据,增量迁移更加稳定,占用的网络带宽更少。

      说明

      仅当迁移类型的选择结果包含增量迁移时,才有此配置项。

      DTS支持开启CDC的表最大数量限制

      请合理设置当前迁移实例允许开启CDC的表数量,默认为1000。

      说明

      SQLServer增量同步模式选择解析源库日志做增量同步(不支持堆表)时,不会有此配置项。

      目标已存在表的处理模式

      • 预检查并报错拦截:检查目标数据库中是否存在与源库同名的表。若不存在同名表,则通过检查任务正常启动;否则将在预检查阶段报错,数据迁移任务不会启动。

        解决方案:如果目标库中的同名表不方便删除或重命名,您可通过配置库表列名映射更改该表在目标库中的名称。

      • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。

        警告

        选择忽略报错并继续执行可能导致数据不一致,给业务带来风险,例如:

        • 表结构一致的情况下,若目标库已存在与源库主键值相同的记录:

          • 全量迁移阶段,DTS保留目标库中的现有记录,而不会将源库中的对应记录迁移到目标库中。

          • 增量迁移阶段,目标库中的数据可能会被源库的新数据覆盖,导致目标库中的历史数据丢失。

        • 表结构不一致的情况下,可能导致只能迁移部分列的数据或迁移失败,请谨慎操作。

      源库对象

      源库对象框中单击待迁移的对象,然后单击向右小箭头将其移动到已选择对象框。

      说明

      迁移对象选择的粒度为Schema、表、列。若选择的迁移对象为表或列,其他对象(如视图、触发器、存储过程)不会被迁移至目标库。

      已选择对象

      • 如需更改单个迁移对象在目标实例中的名称,请右击已选择对象中的迁移对象,设置方式,请参见库表列名单个映射

      • 如需批量更改迁移对象在目标实例中的名称,请单击已选择对象方框右上方的批量编辑,设置方式,请参见库表列名批量映射

      说明
      • 如果使用了对象名映射功能,可能会导致依赖这个对象的其他对象迁移失败。

      • 如需设置WHERE条件过滤数据,请在已选择对象中右击待迁移的表,在弹出的对话框中设置过滤条件

      • 如需按库或表级别选择迁移的SQL操作,请在已选择对象中右击待迁移对象,并在弹出的对话框中选择所需迁移的SQL操作。

    2. 单击下一步高级配置,进行高级参数配置。

      配置

      说明

      选择调度该任务的专属集群

      DTS默认将任务调度到共享集群上,您无需选择。若您希望任务更加稳定,可以购买专属集群来运行DTS迁移任务。

      源库、目标库无法连接后的重试时间

      在迁移任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认重试720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的时间内重新连接上源、目标库,迁移任务将自动恢复。否则,迁移任务将失败。

      说明
      • 针对同源或者同目标的多个DTS实例,网络重试时间以后创建任务的设置为准。

      • 由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。

      源库、目标库出现其他问题后的重试时间

      在迁移任务启动后,若源库或目标库出现非连接性的其他问题(如DDLDML执行异常),则DTS会报错并会立即进行持续的重试操作,默认持续重试时间为10分钟,您也可以在取值范围(1~1440分钟)内自定义重试时间,建议设置10分钟以上。如果DTS在设置的重试时间内相关操作执行成功,迁移任务将自动恢复。否则,迁移任务将会失败。

      重要

      源库、目标库出现其他问题后的重试时间的值需要小于源库、目标库无法连接后的重试时间的值。

      是否限制全量迁移速率

      在全量迁移阶段,DTS将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。您可以根据实际情况,选择是否对全量迁移任务进行限速设置(设置每秒查询源库的速率QPS每秒全量迁移的行数RPS每秒全量迁移的数据量(MB)BPS),以缓解目标库的压力。

      说明

      是否限制增量迁移速率

      您也可以根据实际情况,选择是否对增量迁移任务进行限速设置(设置每秒增量迁移的行数RPS每秒增量迁移的数据量(MB)BPS),以缓解目标库的压力。

      说明

      环境标签

      您可以根据实际情况,选择用于标识实例的环境标签。本示例无需选择。

      配置ETL功能

      选择是否配置ETL功能。关于ETL的更多信息,请参见什么是ETL

      监控告警

      根据业务需求选择是否设置告警并接收告警通知。

      • 不设置:不设置告警。

      • 设置:设置告警。您还需要设置告警阈值告警联系人,当迁移失败或延迟超过阈值后,系统将进行告警通知。

    3. 单击下一步数据校验,进行数据校验任务配置。

      若您需要使用数据校验功能,配置方法请参见配置数据校验

  6. 保存任务并进行预检查。

    • 若您需要查看调用API接口配置该实例时的参数信息,请将鼠标光标移动至下一步保存任务并预检查按钮上,然后单击气泡中的预览OpenAPI参数

    • 若您无需查看或已完成查看API参数,请单击页面下方的下一步保存任务并预检查

    说明
    • 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。

    • 如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

    • 如果预检查产生警告:

      • 对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

      • 对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情确认屏蔽确定重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。

  7. 购买实例。

    1. 预检查通过率显示为100%时,单击下一步购买

    2. 购买页面,选择数据迁移实例的链路规格,详细说明请参见下表。

      类别

      参数

      说明

      信息配置

      资源组配置

      选择实例所属的资源组,默认为default resource group。更多信息,请参见什么是资源管理

      链路规格

      DTS为您提供了不同性能的迁移规格,迁移链路规格的不同会影响迁移速率,您可以根据业务场景进行选择。更多信息,请参见数据迁移链路规格说明

    3. 配置完成后,阅读并选中《数据传输(按量付费)服务条款》

    4. 单击购买并启动,并在弹出的确认对话框,单击确定

      您可以在迁移任务列表页面,查看迁移实例的具体进度。

      说明
      • 若迁移实例不包含增量迁移任务,则迁移实例会自动结束。迁移实例自动结束后,运行状态已完成

      • 若迁移实例包含增量迁移任务,则迁移实例不会自动结束,增量迁移任务会持续进行。在增量迁移任务正常运行期间,迁移实例的运行状态运行中

附录一:支持增量迁移的SQL操作

DML操作

INSERT、UPDATE、DELETE

说明

不支持迁移仅更新大字段的UPDATE语句。

DDL操作

  • CREATE TABLE

    说明

    不支持分区、表定义内部包含函数。

  • ALTER TABLE

    仅包含ADD COLUMN、DROP COLUMN

  • DROP TABLE

  • CREATE INDEX、DROP INDEX

说明
  • 不支持迁移事务性的DDL操作。例如,单条SQL语句中添加多个列的DDL操作或者单条SQL语句中同时包含DDLDML的操作,都可能导致数据丢失。

  • 不支持迁移包含自定义类型的DDL操作。

  • 不支持迁移Online DDL操作。

  • 不支持迁移将保留关键字用作属性名的DDL操作。

  • 不支持迁移系统存储过程执行的DDL操作

  • 不支持迁移TRUNCATE TABLE操作。

附录二:支持结构迁移的对象

  • 支持结构迁移的对象:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、plan guide、自定义类型、rule、default、sequence。

  • 不支持结构迁移的对象:assemblies、service broker、全文索引、全文目录、分布式schema、分布式函数、CLR存储过程、CLR标量函数、CLR表值函数、内部表、系统、聚合函数。