

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

# 使用微软 SQL Server 数据库作为来源 AWS DMS
<a name="CHAP_Source.SQLServer"></a>

使用迁移一个或多个 Microsoft SQL Server 数据库中的数据 AWS DMS。使用 SQL Server 数据库作为源，您可以将数据迁移到另一个 SQL Server 数据库或其他 AWS DMS 支持的数据库中。

有关 AWS DMS 支持作为源的 SQL Server 版本的信息，请参见[的来源 AWS DMS](CHAP_Introduction.Sources.md)。

源 SQL Server 数据库可安装在您网络中的任意计算机上。在与 AWS DMS一起使用时，需要 SQL Server 账户，该账户对源数据库具有与选定任务类型相对应的访问权限。有关更多信息，请参阅 [SQL Server 任务权限](#CHAP_Source.SQLServer.Permissions)。

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

```
IPAddress\InstanceName
```

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

```
10.0.0.25\SQLTest
```

此外，请获取您的命名 SQL Server 实例监听的端口号，然后使用它来配置您的 AWS DMS 源端点。

**注意**  
端口 1433 是 Microsoft SQL Server 的默认端口。但是，也经常使用每次启动 SQL Server 时更改的动态端口，以及用于通过防火墙连接到 SQL Server 的特定静态端口号。因此，在创建 AWS DMS 源端点时，您想知道命名的 SQL Server 实例的实际端口号。

可以使用 SSL 加密 SQL Server 终端节点与复制实例之间的连接。有关将 SSL 用于 SQL Server 终端节点的更多信息，请参阅[将 SSL 与 AWS Database Migration Service](CHAP_Security.SSL.md)。

您可以使用 CDC 从 SQL Server 数据库进行持续迁移。有关为 CDC 配置源 SQL Server 数据库的信息，请参阅[捕获数据更改，以便从 SQL Server 进行持续复制](CHAP_Source.SQLServer.CDC.md)。

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

**Topics**
+ [使用 SQL Server 作为源代码的限制 AWS DMS](#CHAP_Source.SQLServer.Limitations)
+ [SQL Server 任务权限](#CHAP_Source.SQLServer.Permissions)
+ [在 SQL Server 源中使用持续复制（CDC）的先决条件](#CHAP_Source.SQLServer.Prerequisites)
+ [支持的 SQL Server 压缩方法](#CHAP_Source.SQLServer.Compression)
+ [使用自行管理的 SQL Server AlwaysOn 可用性组](#CHAP_Source.SQLServer.AlwaysOn)
+ [使用 SQL Server 作为源时的端点设置 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)
+ [SQL Server 的源数据类型](#CHAP_Source.SQLServer.DataTypes)
+ [捕获数据更改，以便从 SQL Server 进行持续复制](CHAP_Source.SQLServer.CDC.md)

## 使用 SQL Server 作为源代码的限制 AWS DMS
<a name="CHAP_Source.SQLServer.Limitations"></a>

将 SQL Server 数据库作为 AWS DMS源时，存在以下限制：
+ 列的身份属性不迁移到目标数据库列。
+ SQL Server 端点不支持使用包含稀疏列的表。
+ 不支持 Windows 身份验证。
+ 不复制对 SQL Server 中计算字段的更改。
+ 不支持临时表。
+ 不支持 SQL Server 分区切换。
+ 使用 WRITETEXT 和 UPDATETEXT 实用程序时， AWS DMS 不会捕获应用于源数据库的事件。
+ 不支持以下数据操作语言（DML）模式。

  ```
  SELECT * INTO new_table FROM existing_table
  ```
+ 在将 SQL Server 作为源时，不支持列级别加密。
+ AWS DMS 不支持将 SQL Server 2008 或 SQL Server 2008 R2 作为来源进行服务器级审计。这是因为 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 Server Replication Publisher 定义。Microsoft SQL Server 系统管理员必须从 Microsoft SQL Server 删除这些定义。
+ 仅限满载的任务支持从架构绑定和 non-schema-bound视图迁移数据。
+ 不支持使用 sp\$1rename 重命名表（例如，`sp_rename 'Sales.SalesRegion', 'SalesReg;)`
+ 不支持使用 sp\$1rename 重命名列（例如，`sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';`）
+ AWS DMS 不支持更改处理以设置和取消设置列默认值（使用带`ALTER TABLE`语`ALTER COLUMN SET DEFAULT`句的子句）。
+ AWS DMS 不支持通过更改处理来设置列可为空性（使用带`ALTER TABLE`语`ALTER COLUMN [SET|DROP] NOT NULL`句的子句）。
+ 在 SQL Server 2012 和 SQL Server 2014 中，将 DMS 复制与可用性组一起使用时，无法将分发数据库放入可用性组。SQL 2016 支持将分发数据库放入可用性组中，但合并、双向或 peer-to-peer复制拓扑中使用的分布数据库除外。
+ 对于分区表， AWS DMS 不支持为每个分区设置不同的数据压缩设置。
+ 将值插入 SQL Server 空间数据类型（GEOGRAPHY 和 GEOMETRY）时，可以忽略空间参考系统标识符（SRID）属性或指定其他数字。复制具有空间数据类型的表时， AWS DMS 将 SRID 替换为默认 SRID（几何为 0，地理位置为 4326）。
+ 如果您的数据库未配置 MS-REPLICATION 或 MS-CDC，您仍然可以捕获没有主键的表，但只能捕获 INSERT/DELETE DML 事件。将忽略 UPDATE 和 TRUNCATE TABLE 事件。
+ 不支持列存储索引。
+ 不支持内存优化表（使用内存中 OLTP）。
+ 当复制主键由多个列组成的表时，不支持在完全加载期间更新主键列。
+ 不支持延迟的耐久性。
+ 由于 RDS 执行备份的方式，`readBackupOnly=true` 端点设置（额外连接属性）在 RDS for SQL Server 源实例上不起作用。
+ `EXCLUSIVE_AUTOMATIC_TRUNCATION` 在 Amazon RDS SQL Server 源实例上不起作用，因为 RDS 用户无权运行 SQL Server 存储过程 `sp_repldone`。
+ AWS DMS 不捕获截断命令。
+ AWS DMS 不支持从开启了加速数据库恢复 (ADR) 的数据库进行复制。
+ AWS DMS 不支持在单个事务中捕获数据定义语言 (DDL) 和数据操作语言 (DML) 语句。
+ AWS DMS 不支持复制数据层应用程序包 (DACPAC)。
+ 当您将更改应用于目标数据库时，涉及主键或唯一索引并更新多个数据行的 UPDATE 语句可能会导致冲突。例如，当目标数据库通过 INSERT 和 DELETE 语句而不是单个 UPDATE 语句应用更新时，可能会发生这种情况。在批量优化应用模式中，该表可能会被忽略。在事务应用模式下，UPDATE 操作可能会导致违反约束。要避免出现此问题，请重新加载相关表。或者，在 Apply Exceptions 控制表（`dmslogs.awsdms_apply_exceptions`）中找到有问题的记录，然后在目标数据库中手动对其进行编辑。有关更多信息，请参阅 [更改处理优化设置](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)。
+ AWS DMS 不支持表和架构的复制，其中名称包含以下集合中的特殊字符。

  `\\ -- \n \" \b \r ' \t ;` 
+ 不支持数据屏蔽。 AWS DMS 在不进行屏蔽的情况下迁移被屏蔽的数据。
+ AWS DMS 最多复制 32,767 个带主键的表，每个表最多可复制 1,000 个列。这是因为 AWS DMS 会为每个复制的表创建一个 SQL Server 复制文章，而 SQL Server 复制文章有这些限制。
+ 使用更改数据捕获（CDC）时，必须将构成唯一索引的所有列定义为 `NOT NULL`。如果不满足此要求，将导致出现 SQL Server 系统错误 22838。
+ 如果 SQL Server 将事件从活动事务日志归档到备份日志，或者将其从活动事务日志中截断，则可能丢失事件。

访问备份事务日志时适用以下限制：
+ 不支持加密的备份。
+ 不支持存储在 URL 或 Windows Azure 上的备份。
+ AWS DMS doe snot 支持在文件级别直接处理备用共享文件夹中的事务日志备份。
+ 对于除适用于微软 SQL Server 的 Amazon RDS 以外的 Cloud SQL Server 源，仅 AWS DMS 支持使用活动事务日志进行持续复制 (CDC)。您不能将备份日志用于 CDC。如果 SQL Server 将事件从活动事务日志归档到备份日志，或者在 DMS 读取之前将事件从活动事务日志中截断，则可能丢失事件。
+ 对于适用于 Microsoft SQL Server 的 Amazon RDS 源， AWS DMS 3.5.2 及更低版本仅支持使用活动事务日志进行持续复制 (CDC)，因为 DMS 无法通过 CDC 访问备份日志。如果 RDS for SQL Server 将事件从活动事务日志归档到备份日志，或者在 DMS 读取之前将事件从活动事务日志中截断，则可能丢失事件。此限制不适用于 3.5.3 及更高 AWS DMS 版本。
+ AWS DMS 不支持将适用于 SQL Server 的 Amazon RDS 代理的 CDC 作为来源。
+ 如果 SQL Server 源在完全加载任务期间不可用，则即使数据迁移仍未完成， AWS DMS 也可能会在多次尝试重新连接后将任务标记为已完成。在这种情况下，目标表仅包含连接中断之前迁移的记录，这可能会在源系统和目标系统之间造成数据不一致。为确保数据的完整性，您必须完全重新启动满载任务，或者重新加载受连接中断影响的特定表。

## SQL Server 任务权限
<a name="CHAP_Source.SQLServer.Permissions"></a>

**Topics**
+ [仅完全加载任务的权限](#CHAP_Source.SQLServer.Permissions.FullLoad)
+ [持续复制任务权限](#CHAP_Source.SQLServer.Permissions.Ongoing)

### 仅完全加载任务的权限
<a name="CHAP_Source.SQLServer.Permissions.FullLoad"></a>

要执行仅完全加载的任务，需要以下权限。请注意， AWS DMS 不会创建 `dms_user` 登录角色。有关为 SQL Server 创建登录的信息，请参阅 *Microsoft 文档*中的[创建数据库用户](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16)主题。

```
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;
```

### 持续复制任务权限
<a name="CHAP_Source.SQLServer.Permissions.Ongoing"></a>

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

**从自管理 SQL Server 数据库进行持续复制所需的设置权限**

1. 使用 SQL Server Management Studio（SSMS）或如前面的[仅完全加载任务的权限](#CHAP_Source.SQLServer.Permissions.FullLoad)中所述，创建采用密码身份验证的新 SQL Server 账户，例如 `self_managed_user`。

1. 运行以下 `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;
   ```

1. 除上述权限外，用户还需要以下权限之一：
   + 用户必须是 `sysadmin` 固定服务器角色的成员
   + 配置和权限如[在可用性组环境中的 SQL Server 上设置持续复制：无 sysadmin 角色](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.ag)或[在独立 SQL Server 上设置持续复制：不使用 sysadmin 角色](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.standalone)中所述，具体取决于您的源配置。

#### 从云 SQL Server 数据库进行持续复制所需的设置权限
<a name="CHAP_Source.SQLServer.Permissions.Cloud"></a>

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

使用 SQL Server Management Studio（SSMS）或如前面的[仅完全加载任务的权限](#CHAP_Source.SQLServer.Permissions.FullLoad)中所述，创建采用密码身份验证的新 SQL Server 账户，例如 `rds_user`。

运行以下授权命令。

```
GRANT VIEW SERVER STATE TO rds_user;
```

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

```
USE msdb;
    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;
    
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;
```

对于 Amazon Azure SQL 托管实例，请授予以下权限：

```
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;
```

## 在 SQL Server 源中使用持续复制（CDC）的先决条件
<a name="CHAP_Source.SQLServer.Prerequisites"></a>

您可以针对本地或 Amazon EC2 上的自管理 SQL Server 数据库、诸如 Amazon RDS 之类的云数据库或者 Microsoft Azure SQL 托管实例使用持续复制（更改数据捕获（CDC））。

尤其在对作为 AWS DMS源的 SQL Server 数据库使用持续复制时，存在以下要求：
+ 必须配置 SQL Server 进行完整备份，并且您必须在开始复制数据之前先进行一次备份。
+ 恢复模式必须设置为 **Bulk logged** 或 **Full**。
+ 不支持 SQL Server 备份到多个磁盘。如果将备份定义为将数据库备份写入不同磁盘上的多个文件，则 AWS DMS 无法读取数据， AWS DMS 任务将失败。
+ 对于自管理 SQL Server 源，在您删除任务时，DMS CDC 任务中使用的源数据库的 SQL Server Replication Publisher 定义不会被删除。SQL Server 系统管理员必须从 SQL Server 删除自管理源的这些定义。
+ 在 CDC 期间， AWS DMS 需要查找 SQL Server 事务日志备份才能读取更改。 AWS DMS 不支持使用*非*本机格式的第三方备份软件创建的 SQL Server 事务日志备份。要支持*采用*本机格式并且使用第三方备份软件创建的事务日志备份，请将 `use3rdPartyBackupDevice=Y` 连接属性添加到源端点。
+ 对于自管理 SQL Server 源，请注意，在新创建的表发布前，SQL Server 不会捕获对它们的更改。将表添加到 SQL Server 源时，会 AWS DMS 管理发布的创建。但是，该过程可能需要几分钟时间。不会将在该延迟期间对新创建的表执行的操作捕获或复制到目标中。
+ AWS DMS 更改数据捕获需要在 SQL Server 中开启完整的事务日志记录。要在 SQL Server 中启用完整事务日志记录，请启用 MS-REPLICATION 或 CHANGE DATA CAPTURE（CDC）。
+ 在 MS CDC 捕获作业处理这些更改之前，SQL Server *tlog* 条目不会被标记为可重复使用。
+ 内存优化表上不支持 CDC 操作。该限制适用于 SQL Server 2014（在此版本中首次引入该功能）及更高版本。
+ AWS DMS 默认情况下，更改数据捕获需要将 Amazon EC2 或 On-Prem SQL 服务器上的分布数据库作为源。因此，请确保在为带有主键的表配置 MS 复制时已激活分发服务器。

## 支持的 SQL Server 压缩方法
<a name="CHAP_Source.SQLServer.Compression"></a>

请注意以下有关 AWS DMS支持的 SQL Server 压缩方法的内容：
+ AWS DMS 在 SQL Server 版本 2008 及更高版本中支持 Row/Page 压缩。
+ AWS DMS 不支持 Vardecimal 存储格式。
+ AWS DMS 不支持稀疏列和列结构压缩。

## 使用自行管理的 SQL Server AlwaysOn 可用性组
<a name="CHAP_Source.SQLServer.AlwaysOn"></a>

SQL Server Always On 可用性组配有高可用性和灾难恢复解决方案，提供数据库镜像的企业级替代功能。

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

### 使用主可用性组副本
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**要在中使用主可用性组作为源 AWS DMS，请执行以下操作：**

1. 为可用性副本中的所有 SQL Server 实例启用分发选项。有关更多信息，请参阅 [在自管理 SQL Server 上设置持续复制](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC)。

1. 在 AWS DMS 控制台中，打开 SQL Server 源数据库设置。对于**服务器名称**，请指定为可用性组侦听器配置的域名服务（DNS）名称或 IP 地址。

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

### 使用辅助可用性组副本
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary"></a>

**要在中使用辅助可用性组作为源 AWS DMS，请执行以下操作：**

1. 使用与 AWS DMS 源端点用户相同的凭据来连接各个副本。

1. 确保您的 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>';
   ```

1. 创建源端点时，请为端点的**服务器名称**或端点密钥的**服务器地址**指定可用性组侦听器的 DNS 名称。有关可用性组侦听器的更多信息，请参阅 SQL Server 文档中的[可用性组侦听器是什么？](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-listener-overview?view=sql-server-ver15)。

   您可以使用公有 DNS 服务器或本地 DNS 服务器来解析可用性组侦听器、主副本和辅助副本。要使用本地 DNS 服务器，请配置 Amazon Route 53 Resolver。有关更多信息，请参阅 [使用您自己的本地名称服务器](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver)。

1. 请将以下额外连接属性添加到您的源端点。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. 在您可用性组的所有副本上启用分发选项。将所有节点添加到分发服务器列表中。有关更多信息，请参阅 [设置分发](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup)。

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

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



#### 限制
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.limitations"></a>

以下是使用辅助可用性组副本的限制：
+ AWS DMS 使用只读可用性组副本作为源时，不支持 Safeguard。有关更多信息，请参阅 [使用 SQL Server 作为源时的端点设置 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)。
+ AWS DMS 使用只读可用性组副本作为源时，不支持`setUpMsCdcForTables`额外的连接属性。有关更多信息，请参阅 [使用 SQL Server 作为源时的端点设置 AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)。
+ AWS DMS 从版本 3.4.7 开始，可以使用自我管理的辅助可用性组副本作为源数据库，用于持续复制（更改数据捕获或 CDC）。不支持云 SQL Server 多可用区只读副本。如果您使用早期版本的 AWS DMS，请确保使用主可用性组副本作为 CDC 的源数据库。

#### 失效转移到其他节点
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.failover"></a>

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

## 使用 SQL Server 作为源时的端点设置 AWS DMS
<a name="CHAP_Source.SQLServer.ConnectionAttrib"></a>

您可以使用端点设置来配置 SQL Server 源数据库，这与使用额外连接属性类似。您可以在使用 AWS DMS 控制台创建源端点时指定设置，或者使用中带有 `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON 语法的`create-endpoint`[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)命令来指定设置。

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/CHAP_Source.SQLServer.html)

## SQL Server 的源数据类型
<a name="CHAP_Source.SQLServer.DataTypes"></a>

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

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

有关 AWS DMS 数据类型的更多信息，请参见[AWS Database Migration Service 的数据类型](CHAP_Reference.DataTypes.md)。


|  SQL Server 数据类型  |  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 Server 2008 及更高版本）  |  DATETIME  | 
|  SMALLDATETIME  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIMEOFFSET  |  WSTRING  | 
|  CHAR  |  string  | 
|  VARCHAR  |  string  | 
|  VARCHAR (max)  |  CLOB TEXT 要将此数据类型与一起使用 AWS DMS，必须为特定任务启用 CLOB 数据类型。 对于 SQL Server 表， AWS DMS 即使对于不更改 SQL Server 中 LOB 列值的 UPDATE 语句，也会更新目标中的 LOB 列。 在 CDC 期间，仅在包含主键的表中 AWS DMS 支持 CLOB 数据类型。  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR (length)  |  WSTRING  | 
|  NVARCHAR (max)  |  NCLOB NTEXT 要将此数据类型与一起使用 AWS DMS，必须 SupportLobs 为特定任务启用使用。有关启用 Lob 支持的更多信息，请参阅[在任务中为源数据库设置 LOB 支持 AWS DMS](CHAP_Tasks.LOBSupport.md)。 对于 SQL Server 表， AWS DMS 即使对于不更改 SQL Server 中 LOB 列值的 UPDATE 语句，也会更新目标中的 LOB 列。 在 CDC 期间，仅在包含主键的表中 AWS DMS 支持 CLOB 数据类型。  | 
|  BINARY  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  VARBINARY (max)  |  BLOB IMAGE 对于 SQL Server 表， AWS DMS 即使对于不更改 SQL Server 中 LOB 列值的 UPDATE 语句，也会更新目标中的 LOB 列。 要将此数据类型与一起使用 AWS DMS，必须允许将 BLOB 数据类型用于特定任务。 AWS DMS 仅在包含主键的表中支持 BLOB 数据类型。  | 
|  TIMESTAMP  |  BYTES  | 
|  UNIQUEIDENTIFIER  |  string  | 
|  HIERARCHYID   |  在复制到 SQL Server 目标终端节点时，使用 HIERARCHYID。 在复制到所有其他目标终端节点时，使用 WSTRING (250)。  | 
|  XML  |  NCLOB 对于 SQL Server 表， AWS DMS 即使对于不更改 SQL Server 中 LOB 列值的 UPDATE 语句，也会更新目标中的 LOB 列。 要将此数据类型与一起使用 AWS DMS，必须允许将 NCLOB 数据类型用于特定任务。 在 CDC 期间，仅在包含主键的表中 AWS DMS 支持 NCLOB 数据类型。  | 
|  GEOMETRY  |  在复制到支持此数据类型的目标终端节点时，使用 GEOMETRY。 在复制到不支持此数据类型的目标终端节点时，使用 CLOB。  | 
|  GEOGRAPHY  |  在复制到支持此数据类型的目标终端节点时，使用 GEOGRAPHY。 在复制到不支持此数据类型的目标终端节点时，使用 CLOB。  | 

AWS DMS 不支持包含以下数据类型的字段的表。
+ CURSOR
+ SQL\$1VARIANT
+ TABLE

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