使用 Microsoft SQL 服务器数据库作为来源 AWS DMS - AWS 数据库迁移服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Microsoft SQL 服务器数据库作为来源 AWS DMS

使用迁移一个或多个 Microsoft SQL 服务器数据库中的数据 AWS DMS。使用SQL服务器数据库作为源,您可以将数据迁移到另一个SQL服务器数据库,或者迁移到其他 AWS DMS 支持的数据库之一。

有关 AWS DMS 支持作为源的 SQL Server 版本的信息,请参见的来源 AWS DMS

源SQL服务器数据库可以安装在网络中的任何计算机上。与一起使用时,需要具有相应访问源数据库权限的SQL服务器帐户,以执行您选择的任务类型 AWS DMS。有关更多信息,请参阅 SQL服务器任务的权限

AWS DMS 支持从SQL服务器的命名实例迁移数据。当您创建源终端节点时,您可以在服务器名称中使用以下表示法。

IPAddress\InstanceName

例如,以下是正确的源终端节点服务器名称。在这里,名称的第一部分是服务器的 IP 地址,第二部分是SQL服务器实例名称(在本例中为SQLTest)。

10.0.0.25\SQLTest

另外,获取您的指定SQL服务器实例监听的端口号,然后使用它来配置您的 AWS DMS 源端点。

注意

1433 端口是微软SQL服务器的默认端口。但是,也经常使用每次启动SQL服务器时都会更改的动态端口,以及用于通过防火墙连接到SQL服务器的特定静态端口号。因此,在创建 AWS DMS 源端点时,您想知道指定的 SQL Server 实例的实际端口号。

您可以使用SSL对SQL服务器终端节点和复制实例之间的连接进行加密。有关使用SQL服务器端点SSL的更多信息,请参阅将 SSL 与 AWS Database Migration Service

您可以使用从SQL服务器数据库CDC进行持续迁移。有关为配置源SQL服务器数据库的信息CDC,请参见捕获数据更改,以便从SQL服务器进行持续复制

有关使用SQL服务器源数据库和的更多详细信息 AWS DMS,请参阅以下内容。

使用SQL服务器作为来源的限制 AWS DMS

使用SQL服务器数据库作为源时,以下限制适用 AWS DMS:

  • 列的身份属性不迁移到目标数据库列。

  • SQL服务器端点不支持使用带有稀疏列的表。

  • 不支持 Windows 身份验证。

  • 对SQL服务器中计算字段的更改不会被复制。

  • 不支持临时表。

  • SQL不支持服务器分区切换。

  • 使用WRITETEXT和UPDATETEXT实用程序时, AWS DMS 不会捕获应用于源数据库的事件。

  • 不支持以下数据操作语言 (DML) 模式。

    SELECT * INTO new_table FROM existing_table
  • 使用 SQL Server 作为源时,不支持列级加密。

  • AWS DMS 不支持将 Server 2008 或 SQL Server 2008 R2 作为来源进行SQL服务器级审计。这是因为 SQL Server 2008 和 2008 R2 存在已知问题。例如,运行以下命令会 AWS DMS 导致失败。

    USE [master] GO ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on) GO
  • 使用 SQL Server 作为源时,在完整 lob 模式下不支持几何列。应改用受限 LOB 模式,或将 InlineLobMaxSize 任务设置设为使用内联 LOB 模式。

  • 在复制任务中使用 Microsoft SQL Server 源数据库时,如果删除该任务,SQL服务器复制发布服务器定义不会被删除。微软SQL服务器系统管理员必须从微软SQL服务器中删除这些定义。

  • 仅限满载的任务支持从架构绑定和 non-schema-bound 视图迁移数据。

  • 不支持使用 sp_rename 重命名表(例如,sp_rename 'Sales.SalesRegion', 'SalesReg;)

  • 不支持使用 sp_rename 重命名列(例如,sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';

  • AWS DMS 不支持更改处理以设置和取消设置列默认值(使用带ALTER TABLEALTER COLUMN SET DEFAULT句的子句)。

  • AWS DMS 不支持通过更改处理来设置列可为空性(使用带ALTER TABLEALTER COLUMN [SET|DROP] NOT NULL句的子句)。

  • SQL在 Serv SQL er 2012 和 Server 2014 中,当对可用性组使用DMS复制时,无法将分布数据库放置在可用性组中。SQL2016 支持将分发数据库放入可用性组,但合并、双向或 peer-to-peer 复制拓扑中使用的分发数据库除外。

  • 对于分区表, AWS DMS 不支持为每个分区设置不同的数据压缩设置。

  • 在SQL服务器空间数据类型(GEOGRAPHY和GEOMETRY)中插入值时,可以忽略空间参照系标识符 (SRID) 属性或指定其他数字。复制具有空间数据类型的表时, AWS DMS 将替换为默认值SRID(0 代表GEOMETRY和 4326 代表)。SRID GEOGRAPHY

  • 如果您的数据库未配置为 MS-REPLICATION 或 MS-CDC,您仍然可以捕获没有主键的表,但只能捕获INSERT/DELETEDML事件。UPDATE并且TRUNCATETABLE事件会被忽略。

  • 不支持列存储索引。

  • 不支持内存优化表(使用内存中OLTP)。

  • 当复制主键由多个列组成的表时,不支持在完全加载期间更新主键列。

  • 不支持延迟的耐久性。

  • 由于备份的RDS执行方式,readBackupOnly=Y端点设置(额外连接属性)不RDS适用于SQL服务器源实例。

  • EXCLUSIVE_AUTOMATIC_TRUNCATION在 Amazon RDS SQL Server 源实例上不起作用,因为RDS用户无权运行SQL服务器存储过程,sp_repldone

  • AWS DMS 不捕获截断命令。

  • AWS DMS 不支持从开启了加速数据库恢复 (ADR) 的数据库进行复制。

  • AWS DMS 不支持在单个事务中捕获数据定义语言 (DDLDML) 和数据操作语言 () 语句。

  • AWS DMS 不支持复制数据层应用程序包 (DACPAC)。

  • UPDATE当您将更改应用于目标数据库时,涉及主键或唯一索引并更新多个数据行的语句可能会导致冲突。例如,当目标数据库将更新应用为INSERT和DELETE语句而不是单个UPDATE语句时,可能会发生这种情况。在批量优化应用模式中,该表可能会被忽略。在事务应用模式下,该UPDATE操作可能会导致违反约束。要避免出现此问题,请重新加载相关表。或者,在 Apply Exceptions 控制表(dmslogs.awsdms_apply_exceptions)中找到有问题的记录,然后在目标数据库中手动对其进行编辑。有关更多信息,请参阅 更改处理优化设置

  • AWS DMS 不支持表和架构的复制,其中名称包含以下集合中的特殊字符。

    \\ -- \n \" \b \r ' \t ;

  • 不支持数据屏蔽。 AWS DMS 在不进行屏蔽的情况下迁移被屏蔽的数据。

  • AWS DMS 最多复制 32,767 个带主键的表,每个表最多可复制 1,000 个列。这是因为 AWS DMS 会为每个复制的表创建一个SQL服务器复制文章,而SQL服务器复制文章有这些限制。

  • 使用 Change Data Capture (CDC) 时,必须将构成唯一索引的所有列定义为NOT NULL。如果不满足此要求,将导致SQL服务器系统错误 22838。

  • 如果SQL服务器从活动事务日志存档到备份日志,或者从活动事务日志中截断事件,则可能会丢失事件。

访问备份事务日志时适用以下限制:

  • 不支持加密的备份。

  • 不支持存储在 Windows Azure URL 或 Windows Azure 上的备份。

  • AWS DMS 不支持直接处理来自备用共享文件夹的文件级别的事务日志备份。

  • 对于除亚马逊RDS以外的云SQL服务器源 for Microsoft SQL Server,仅 AWS DMS 支持使用活动事务日志进行持续复制 (CDC)。您不能将备份日志与一起使用CDC。如果SQL服务器将事件从活动事务日志存档到备份日志,或者在读取活动事务日志之前将其从活动事务日志中截断,则DMS可能会丢失事件。

  • 对RDS于 Amazon for Microsoft SQL Server 源, AWS DMS 3.5.2 及更低版本仅支持使用活动事务日志进行持续复制 (CDC),因为DMS无法使用访问备份日志。CDC如果 RDS for SQL Server 将事件从活动事务日志存档到备份日志,或者在DMS可以读取之前将其从活动事务日志中截断,则可能会丢失事件。此限制不适用于 3.5.3 及更高 AWS DMS 版本。

SQL服务器任务的权限

仅完全加载任务的权限

要执行仅完全加载的任务,需要以下权限。请注意,这 AWS DMS 不会创建dms_user登录名。有关为SQL服务器创建登录的信息,请参见使用 Microsoft SQL 服务器创建数据库用户

USE db_name; CREATE USER dms_user FOR LOGIN dms_user; ALTER ROLE [db_datareader] ADD MEMBER dms_user; GRANT VIEW DATABASE STATE to dms_user; GRANT VIEW DEFINITION to dms_user; USE master; GRANT VIEW SERVER STATE TO dms_user;

正在进行复制的任务的权限

无论是否使用DMS该sysadmin角色,都可以将自管SQL服务器实例配置为持续复制。对于无法授予sysadmin角色的SQL服务器实例,请确保DMS用户具有如下所述的权限。

设置从自行管理的SQL服务器数据库进行持续复制的权限
  1. 例如,使用 SQL Server Management Studio (SSMS) 或如前所述仅完全加载任务的权限,使用密码身份验证创建新的SQL服务器帐户self_managed_user

  2. 运行以下GRANT命令:

    GRANT VIEW SERVER STATE TO self_managed_user; USE MSDB; GRANT SELECT ON MSDB.DBO.BACKUPSET TO self_managed_user; GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO self_managed_user; GRANT SELECT ON MSDB.DBO.BACKUPFILE TO self_managed_user; USE db_name; CREATE USER self_managed_user FOR LOGIN self_managed_user; ALTER ROLE [db_owner] ADD MEMBER self_managed_user; GRANT VIEW DEFINITION to self_managed_user;
  3. 除上述权限外,用户还需要以下权限之一:

设置从云SQL服务器数据库进行持续复制的权限

云托管SQL服务器实例是指在 Amazon RDS 上运行的 Microsoft SQL Server 实例、Azure SQL 托管实例或支持的任何其他托管云SQL服务器实例。DMS

例如,使用 SQL Server Management Studio (SSMS) 或如前所述仅完全加载任务的权限,使用密码身份验证创建新的SQL服务器帐户rds_user

运行以下授权命令。

GRANT VIEW SERVER STATE TO rds_user; USE MSDB; GRANT SELECT ON MSDB.DBO.BACKUPSET TO rds_user; GRANT SELECT ON MSDB.DBO.BACKUPMEDIAFAMILY TO rds_user; GRANT SELECT ON MSDB.DBO.BACKUPFILE TO rds_user; USE db_name; CREATE USER rds_user FOR LOGIN rds_user; ALTER ROLE [db_owner] ADD MEMBER rds_user; GRANT VIEW DEFINITION to rds_user;

对RDS于 Amazon for Microsoft SQL 服务器源,DMS版本 3.5.3 及更高版本支持从事务日志备份中读取。DMS为确保能够访问日志备份,除上述内容外,还要授予master用户权限或对RDSSQL服务器源的以下权限:

//DMS 3.5.3 version onwards GRANT EXEC ON msdb.dbo.rds_dms_tlog_download TO rds_user; GRANT EXEC ON msdb.dbo.rds_dms_tlog_read TO rds_user; GRANT EXEC ON msdb.dbo.rds_dms_tlog_list_current_lsn TO rds_user; GRANT EXEC ON msdb.dbo.rds_task_status TO rds_user;

使用来自SQL服务器源的持续复制 (CDC) 的先决条件

您可以使用持续复制(更改数据捕获或CDC)来管理本地或亚马逊上的自管理SQL服务器数据库,也可以对云数据库(例如亚马逊EC2RDS或 Microsoft Azure SQL 托管实例)使用持续复制。

以下要求特别适用于使用以SQL服务器数据库作为源的持续复制时 AWS DMS:

  • SQL必须配置服务器以进行完整备份,并且在开始复制数据之前必须执行备份。

  • 恢复模式必须设置为 Bulk loggedFull

  • SQL不支持将服务器备份到多个磁盘。如果将备份定义为将数据库备份写入不同磁盘上的多个文件,则 AWS DMS 无法读取数据, AWS DMS 任务将失败。

  • 对于自行管理的SQL服务器源,在移除任务时,不会删除DMSCDC任务中使用的源的 SQL Server Replication Publisher 定义。对于自行管理的源,SQL服务器系统管理员必须从SQL服务器中删除这些定义。

  • 在此期间CDC, AWS DMS 需要查找SQL服务器事务日志备份以读取更改。 AWS DMS 不支持使用本机格式的第三方备份软件创建的SQL服务器事务日志备份。要支持采用本机格式并且使用第三方备份软件创建的事务日志备份,请将 use3rdPartyBackupDevice=Y 连接属性添加到源端点。

  • 对于自行管理的SQL服务器源,请注意,在新创建的表发布之前,SQLServer 不会捕获这些更改。将表添加到SQL服务器源时,会 AWS DMS 管理发布的创建。但是,该过程可能需要几分钟时间。不会将在该延迟期间对新创建的表执行的操作捕获或复制到目标中。

  • AWS DMS 更改数据捕获需要在 SQL Server 中开启完整的事务日志记录。要在SQL服务器中开启完整事务日志记录,请启用 MS-REPLICATION 或 CHANGE DATA CAPTURE (CDC)。

  • SQL在 MS CDC 捕获作业处理这些更改之前,不会将服务器 tlog 条目标记为可重复使用。

  • CDC内存优化的表不支持操作。此限制适用于 SQL Server 2014(该功能首次推出时)及更高版本。

  • AWS DMS 默认情况下,更改数据采集需要在 Amazon EC2 或 On-Prem SQL 服务器上使用分布数据库作为源。因此,请确保在为带有主键的表配置 MS 复制时已激活分发服务器。

SQL服务器支持的压缩方法

请注意以下有关SQL服务器压缩方法支持的内容 AWS DMS:

  • AWS DMS 在SQL服务器版本 2008 及更高版本中支持行/页压缩。

  • AWS DMS 不支持 Vardecimal 存储格式。

  • AWS DMS 不支持稀疏列和列结构压缩。

使用自行管理的SQL服务器 AlwaysOn可用性组

SQLServer Always On 可用性组提供高可用性和灾难恢复,作为数据库镜像的企业级替代方案。

在中 AWS DMS,您可以从单个主可用性组或辅助可用性组副本迁移更改。

使用主可用性组副本

要在中使用主可用性组作为源 AWS DMS,请执行以下操作:
  1. 为可用性副本中的所有SQL服务器实例开启分发选项。有关更多信息,请参阅 在自行管理SQL的服务器上设置持续复制

  2. 在 AWS DMS 控制台中,打开SQL服务器源数据库设置。在服务器名称中,指定为您的可用性组侦听器配置的域名服务 (DNS) 名称或 IP 地址。

首次启动 AWS DMS 任务时,可能需要比平时更长的时间才能启动。这种缓慢是因为可用性组服务器正在复制表项目的创建。

使用辅助可用性组副本

要在中使用辅助可用性组作为源 AWS DMS,请执行以下操作:
  1. 使用与 AWS DMS 源端点用户相同的凭据来连接各个副本。

  2. 确保您的 AWS DMS 复制实例可以解析所有现有副本的DNS名称并连接到它们。您可以使用以下SQL查询来获取所有副本的DNS名称。

    select ar.replica_server_name, ar.endpoint_url from sys.availability_replicas ar JOIN sys.availability_databases_cluster adc ON adc.group_id = ar.group_id AND adc.database_name = '<source_database_name>';
  3. 创建源终端节点时,请为终端节点的服务器DNS名称或终端密钥的服务器地址指定可用性组侦听器的名称。有关可用性组侦听器的更多信息,请参阅什么是可用性组侦听器? 在SQL服务器文档中。

    您可以使用公共DNS服务器或本地DNS服务器来解析可用性组侦听器、主副本和辅助副本。要使用本地DNS服务器,请配置 Amazon Route 53 解析器。有关更多信息,请参阅 使用您自己的本地名称服务器

  4. 请将以下额外连接属性添加到您的源端点。

    额外连接属性 注意
    applicationIntent ReadOnly 如果没有此ODBC设置,则复制任务将路由到主可用性组副本。有关更多信息,请参阅 SQLServer 文档中的 Server Native Client 对高可用性、灾难恢复的SQL支持
    multiSubnetFailover yes 有关更多信息,请参阅 SQLServer 文档中的 Server Native Client 对高可用性、灾难恢复的SQL支持
    alwaysOnSharedSynchedBackupIsEnabled false 有关更多信息,请参阅 使用SQL服务器作为源时的端点设置 AWS DMS
    activateSafeguard false 有关更多信息,请参阅下面的限制
    setUpMsCdcForTables false 有关更多信息,请参阅下面的限制
  5. 在您可用性组的所有副本上启用分发选项。将所有节点添加到分发服务器列表中。有关更多信息,请参阅 设置分发

  6. 对主读写副本运行以下查询以启用数据库的发布。您只对数据库运行一次此查询。

    sp_replicationdboption @dbname = N'<source DB name>', @optname = N'publish', @value = N'true';

限制

以下是使用辅助可用性组副本的限制:

  • AWS DMS 使用只读可用性组副本作为源时,不支持 Safeguard。有关更多信息,请参阅 使用SQL服务器作为源时的端点设置 AWS DMS

  • AWS DMS 使用只读可用性组副本作为源时,不支持setUpMsCdcForTables额外的连接属性。有关更多信息,请参阅 使用SQL服务器作为源时的端点设置 AWS DMS

  • AWS DMS 从版本 3.4.7 开始,可以使用自我管理的辅助可用性组副本作为源数据库,用于持续复制(更改数据捕获或CDC)。不支持云SQL服务器多可用区只读副本。如果您使用早期版本的 AWS DMS,请确保使用主可用性组副本作为的源数据库CDC。

失效转移到其他节点

如果您将终端节点的ApplicationIntent额外连接属性设置为ReadOnly,则您的 AWS DMS 任务将连接到只读路由优先级最高的只读节点。当优先级最高的只读节点不可用时,它会失效转移到可用性组中的其他只读节点。如果未设置ApplicationIntent,则您的 AWS DMS 任务将仅连接到可用性组中的主(读/写)节点。

使用SQL服务器作为源时的端点设置 AWS DMS

您可以使用端点设置来配置SQL服务器源数据库,就像使用额外的连接属性一样。您可以在使用 AWS DMS 控制台创建源端点时指定设置,也可以使用中的create-endpointAWS CLI命令和--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'JSON语法。

下表显示了可以将 SQL Server 用作源的端点设置。

名称 描述

ActivateSafeguard

此属性可开启或关闭 Safeguard。有关 Safeguard 的更多信息,请参阅下文的 SafeguardPolicy

默认值:true

有效值:{falsetrue}

例如:'{"ActivateSafeguard": true}'

AlwaysOnSharedSynchedBackupIsEnabled

此属性可调整从作为 Always On 可用性组群集一部分托管的SQL服务器源数据库迁移 AWS DMS 时的行为。

AWS DMS 增强了对配置为SQL在 Always On 群集中运行的服务器源数据库的支持。在这种情况下, AWS DMS 会尝试跟踪事务备份是否是在 Always On 集群中的节点(而非托管源数据库实例的节点)上发生。在迁移任务启动 AWS DMS 时,尝试连接到集群中的每个节点,但如果无法连接到任何一个节点,则会失败。

如果您 AWS DMS 需要轮询 Always On 集群中的所有节点以获取事务备份,请将此属性设置为false

默认值:true

有效值:truefalse

示例:'{"AlwaysOnSharedSynchedBackupIsEnabled": false}'

"ApplicationIntent": "readonly"

此ODBC驱动程序属性设置会让 SQL Server 将您的复制任务路由到优先级最高的只读节点。如果没有此设置,SQL服务器会将您的复制任务路由到主读写节点。

EnableNonSysadminWrapper

在没有 sysadmin 用户的独立SQL服务器上设置持续复制时,请使用此端点设置。3.4.7 及更高 AWS DMS 版本支持此参数。有关在独立SQL服务器上设置持续复制的信息,请参见捕获数据更改,以便从SQL服务器进行持续复制

默认值:false

有效值:truefalse

例如:'{"EnableNonSysadminWrapper": true}'

ExecuteTimeout

使用这个额外的连接属性 (ECA) 来设置 SQL Server 实例的客户端语句超时(以秒为单位)。默认值为 60 秒。

例如:'{"ExecuteTimeout": 100}'

FatalOnSimpleModel

如果设置为true,则当SQL服务器数据库恢复模式设置为时,此设置会生成致命错误simple

默认值:false

有效值:truefalse

示例:'{"FatalOnSimpleModel": true}'

ForceLobLookup

强制LOB进行内联查找LOB。

默认值:false

有效值:truefalse

例如:'{"ForceLobLookup": false}'

"MultiSubnetFailover": "Yes"

此ODBC驱动程序属性DMS有助于在可用性组故障转移时连接到新的主服务器。此属性专为连接中断或侦听器 IP 地址不正确的情况而设计。在这些情况下, AWS DMS 会尝试连接到与可用性组侦听器关联的所有 IP 地址。

ReadBackupOnly

使用此属性需要 sysadmin 权限。当此属性设置为时Y,在正在进行的复制过程中,只能从事务日志备份中 AWS DMS 读取更改,而不会从活动事务日志文件中读取更改。通过将此参数设置为 Y,可以在完全加载和持续复制任务期间控制活动事务日志文件的增长。但是,它会向持续复制添加一些源延迟。

有效值:NY。默认为 N

例如:'{"ReadBackupOnly": Y}'

注意:由于RDS执行备份的方式,此参数不适用于 Amazon RDS SQL Server 源实例。

SafeguardPolicy

为了获得最佳性能,请 AWS DMS 尝试从活动事务日志中捕获所有未读更改 (TLOG)。但是,有时由于截断,活动内容TLOG可能不包含所有未读更改。发生这种情况时, AWS DMS 访问日志备份以捕获缺少的更改。为了最大限度地减少访问日志备份的需求,请使用以下方法之一 AWS DMS 防止截断:

  1. RELY_ON_SQL_SERVER_REPLICATION_AGENT启动数据库中的事务):这是的默认设置 AWS DMS。

    使用此设置时, AWS DMS 要求SQL服务器日志读取器代理处于运行状态,以便 AWS DMS 可以将标记为复制的事务从活动状态移出TLOG。请注意,如果 Log Reader Agent 未运行,则活动数据库TLOG可能会变满,从而导致源数据库切换到只读模式,直到您可以解决问题。如果您出于其他目的需要在数据库中启用 Microsoft 复制 AWS DMS,则必须选择此设置。

    使用此设置时,通过创建名为的表来 AWS DMS 最大限度地减少日志备份读取,awsdms_truncation_safeguard并通过模仿数据库中打开的事务来防止TLOG截断。这可以防止数据库在五分钟内(默认情况下)截断事件并将其移至备份日志。确保该表未包含在任何维护计划中,因为它可能会导致维护作业失败。如果没有使用 Start Transactions 数据库选项配置的任务,则可以安全地删除此表。

  2. EXCLUSIVE_AUTOMATIC_TRUNCATION(仅用于sp_repldone单个任务):使用此设置时 AWS DMS ,可以完全控制将日志条目标记为ready for truncation使用的复制代理进程sp_repldone。使用此设置时, AWS DMS 不会像RELY_ON_SQL_SERVER_REPLICATION_AGENT(默认)设置那样使用虚拟事务。只有当 MS Replication 不用于源数据库以外 AWS DMS 的任何其他目的时,才能使用此设置。此外,使用此设置时,只有一个 AWS DMS 任务可以访问数据库。如果需要对同一个数据库运行 parallel AWS DMS 任务,请使用RELY_ON_SQL_SERVER_REPLICATION_AGENT

    • 此设置要求在数据库中停止日志读取器代理。如果任务启动时日志阅读器代理正在运行,则该 AWS DMS 任务将强制其停止。或者,也可以在启动此任务之前手动停止日志读取器代理。

    • 在 MS-中使用此方法时CDC,应停止并禁用 MS-c CDC aptureMS-CDC 清理作业。

    • Microsoft SQL 服务器迁移作业在远程 Distributor 计算机上运行时,你 AWS DMS 无法使用此设置,因为无法访问远程计算机。

    • EXCLUSIVE_AUTOMATIC_TRUNCATION在 Amazon 上不RDS适用于SQL服务器源实例,因为亚马逊RDS用户无权运行sp_repldone存储过程。

    • 如果在不使用 sysadmin 角色的情况下将 SafeguardPolicy 设置为 EXCLUSIVE_AUTOMATIC_TRUNCATION,则必须向 dmsuser 用户授予 dbo.syscategoriesdbo.sysjobs 对象的权限。

默认值:RELY_ON_SQL_SERVER_REPLICATION_AGENT

有效值:{EXCLUSIVE_AUTOMATIC_TRUNCATIONRELY_ON_SQL_SERVER_REPLICATION_AGENT}

例如:'{"SafeguardPolicy": "EXCLUSIVE_AUTOMATIC_TRUNCATION"}'

SetUpMsCdcForTables

此属性CDC为源数据库和任务映射中未启用 MS-Replication 的表启用 MS-。将此值设置为 true,即可在源数据库上运行 sp_cdc_enable_db 存储过程,并在任务中未在源数据库中启用 MS-Replication 的每个表上运行 sp_cdc_enable_table 存储过程。有关启用分发的更多信息,请参阅在自行管理SQL的服务器上设置持续复制

有效值:{truefalse}

例如:'{"SetUpMsCdcForTables": true}'

TlogAccessMode

表示用于获取CDC数据的模式。

默认值:PreferTlog

有效值:BackupOnlyPreferBackupPreferTlogTlogOnly

例如:'{"TlogAccessMode": "PreferTlog"}'

Use3rdPartyBackupDevice

当此属性设置为 Y 时,如果第三方事务日志备份是以本机格式创建的, AWS DMS 会处理这些备份。

SQL服务器的源数据类型

使用SQL服务器作为源的数据迁移 AWS DMS 支持大多数SQL服务器数据类型。下表显示了使用时支持的SQL服务器源数据类型 AWS DMS 以及 AWS DMS 数据类型的默认映射。

有关如何查看目标中映射的数据类型的信息,请参阅有关所使用的目标终端节点的部分。

有关 AWS DMS 数据类型的更多信息,请参见AWS Database Migration Service 的数据类型

SQL服务器数据类型

AWS DMS 数据类型

BIGINT

INT8

BIT

BOOLEAN

DECIMAL

NUMERIC

INT

INT4

MONEY

NUMERIC

NUMERIC(p, s)

NUMERIC

SMALLINT

INT2

SMALLMONEY

NUMERIC

TINYINT

UINT1

REAL

REAL4

FLOAT

REAL8

DATETIME

DATETIME

DATETIME2(SQL服务器 2008 及更高版本)

DATETIME

SMALLDATETIME

DATETIME

DATE

DATE

TIME

TIME

DATETIMEOFFSET

WSTRING

CHAR

STRING

VARCHAR

STRING

VARCHAR(最大)

CLOB

TEXT

要将此数据类型与一起使用 AWS DMS,必须允许将CLOB数据类型用于特定任务。

对于SQL服务器表,即使对于不更改 Server 中LOB列值的UPDATE语句,也会 AWS DMS 更新目标中的LOBSQL列。

期间CDC,仅 AWS DMS 支持包含主键的表中的CLOB数据类型。

NCHAR

WSTRING

NVARCHAR(长度)

WSTRING

NVARCHAR(最大)

NCLOB

NTEXT

要将此数据类型与一起使用 AWS DMS,必须 SupportLobs 为特定任务启用使用。有关启用 Lob 支持的更多信息,请参阅在 AWS DMS 任务中设置对源数据库的LOB支持

对于SQL服务器表,即使对于不更改 Server 中LOB列值的UPDATE语句,也会 AWS DMS 更新目标中的LOBSQL列。

期间CDC,仅 AWS DMS 支持包含主键的表中的CLOB数据类型。

BINARY

BYTES

VARBINARY

BYTES

VARBINARY(最大)

BLOB

IMAGE

对于SQL服务器表,即使对于不更改 Server 中LOB列值的UPDATE语句,也会 AWS DMS 更新目标中的LOBSQL列。

要将此数据类型与一起使用 AWS DMS,必须允许将BLOB数据类型用于特定任务。

AWS DMS 仅支持包含主键的表中的BLOB数据类型。

TIMESTAMP

BYTES

UNIQUEIDENTIFIER

STRING

HIERARCHYID

HIERARCHYID在复制到SQL服务器目标端点时使用。

复制到所有其他目标端点时使用 WSTRING (250)。

XML

NCLOB

对于SQL服务器表,即使对于不更改 Server 中LOB列值的UPDATE语句,也会 AWS DMS 更新目标中的LOBSQL列。

要将此数据类型与一起使用 AWS DMS,必须允许将NCLOB数据类型用于特定任务。

期间CDC,仅 AWS DMS 支持包含主键的表中的NCLOB数据类型。

GEOMETRY

GEOMETRY在复制到支持此数据类型的目标端点时使用。

CLOB在复制到不支持此数据类型的目标端点时使用。

GEOGRAPHY

GEOGRAPHY在复制到支持此数据类型的目标端点时使用。

CLOB在复制到不支持此数据类型的目标端点时使用。

AWS DMS 不支持包含以下数据类型的字段的表。

  • CURSOR

  • SQL_VARIANT

  • TABLE

注意

根据用户定义的数据类型的基类型来支持这些类型。例如,基于DATETIME的用户定义的数据类型作为DATETIME数据类型进行处理。