AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

将 Microsoft SQL Server 数据库作为 AWS Database Migration Service 目标

您可以使用 AWS DMS 将数据迁移到 Microsoft SQL Server 数据库。将 SQL Server 数据库作为目标时,您可以从另一个 SQL Server 数据库或其他支持的数据库之一迁移数据。

对于本地和 Amazon EC2 实例数据库,AWS DMS 支持将 SQL Server 版本 2005、2008、2008 R2、2012、2014 和 2016(Enterprise、Standard、Workgroup 和 Developer 版)作为目标。不支持 Web 和 Express 版。

对于 Amazon RDS 实例数据库,AWS DMS 支持将 SQL Server 版本 2008 R2、2012、2014 和 2016(Enterprise、Standard、Workgroup 和 Developer 版)作为目标。不支持 Web 和 Express 版。

有关使用 AWS DMS 和 SQL Server 目标数据库的其他详细信息,请参阅以下内容。

将 SQL Server 作为 AWS Database Migration Service 目标时的限制

将 SQL Server 数据库作为 AWS DMS 目标时的限制如下:

  • 在您手动创建带有计算列的 SQL Server 目标表时,如果使用 BCP 批量复制实用程序,则不支持完全加载复制。要使用完全加载复制,请在控制台的高级选项卡中禁用使用 BCP 加载表选项。有关使用 BCP 的更多信息,请参阅 Microsoft SQL Server 文档

  • 复制带有 SQL Server 空间数据类型(GEOMETRY 和 GEOGRAPHY)的表时,AWS DMS 使用默认空间引用标识符 (SRID) 替换所有您可能插入的 SRID。对于 GEOMETRY,默认 SRID 为 0,对于 GEOGRAPHY,则为 4326。

  • 不支持临时表。在事务性应用模式下,如果在目标中手动创建这些表,则迁移临时表可能适用于仅复制任务。

将 SQL Server 作为 AWS Database Migration Service 目标时的安全要求

下面介绍使用 AWS DMS 和 Microsoft SQL Server 目标时的安全要求。

  • AWS DMS 用户账户必须在要连接到的 Microsoft SQL Server 数据库上至少具有 db_owner 用户角色。

  • Microsoft SQL Server 系统管理员必须向所有 AWS DMS 用户账户提供此权限。

将 SQL Server 作为 AWS DMS 目标时的额外连接属性

您可以使用额外的连接属性配置 SQL Server 目标。在创建目标终端节点时,您可以指定这些设置。应将多个额外连接属性设置用分号隔开。

下表显示了在目标为 SQL Server 时可以使用的额外连接属性。

名称 说明

useBCPFullLoad

使用该属性可通过 BCP 传输数据以进行完全加载操作。 如果目标表包含的身份列在源表中不存在,必须禁用使用 BCP 加载数据选项。

默认值:Y

有效值:Y/N

示例:useBCPFullLoad=Y

BCPPacketSize

用于通过 BCP 传输数据的数据包的最大大小 (以字节为单位)。

默认值:16384

有效值:1–100000

示例:BCPPacketSize=16384

controlTablesFileGroup

为 AWS DMS 内部表指定文件组。当复制任务开始时,将在指定文件组上创建所有内部 AWS DMS 控制表(awsdms_ apply_exception、awsdms_apply、awsdms_changes)。

默认值:无

有效值:字符串

示例:controlTablesFileGroup=filegroup1  

以下是用于创建文件组的命令的示例。

ALTER DATABASE replicate ADD FILEGROUP Test1FG1; GO ALTER DATABASE replicate ADD FILE (        NAME = test1dat5,        FILENAME = 'C:\temp\DATA\t1dat5.ndf',        SIZE = 5MB,        MAXSIZE = 100MB,        FILEGROWTH = 5MB    )    TO FILEGROUP Test1FG1;    GO

Microsoft SQL Server 的目标数据类型

下表列出了使用 AWS DMS 时支持的 Microsoft SQL Server 目标数据类型以及来自 AWS DMS 数据类型的默认映射。有关 AWS DMS 数据类型的其他信息,请参阅 AWS Database Migration Service 的数据类型

AWS DMS 数据类型

SQL Server 数据类型

BOOLEAN

TINYINT

BYTES

VARBINARY(length)

DATE

对于 SQL Server 2008 和更高版本,请使用 DATE。

对于早期版本,如果小数位数等于或小于 3,请使用 DATETIME。在所有其他情况下,请使用 VARCHAR (37)。

TIME

对于 SQL Server 2008 和更高版本,请使用 DATETIME2 (%d)。

对于早期版本,如果小数位数等于或小于 3,请使用 DATETIME。在所有其他情况下,请使用 VARCHAR (37)。

DATETIME

对于 SQL Server 2008 和更高版本中,请使用 DATETIME2 (scale)。

对于早期版本,如果小数位数等于或小于 3,请使用 DATETIME。在所有其他情况下,请使用 VARCHAR (37)。

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMBER (p,s)

REAL4

REAL

REAL8

FLOAT

STRING

如果列是日期或时间列,请执行以下操作:

  • 对于 SQL Server 2008 和更高版本,请使用 DATETIME2。

  • 对于早期版本,如果小数位数等于或小于 3,请使用 DATETIME。在所有其他情况下,请使用 VARCHAR (37)。

如果列不是日期或时间列,请使用 VARCHAR (length)。

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR (length)

BLOB

VARBINARY(max)

IMAGE

要将此数据类型用于 AWS DMS,必须允许对特定任务使用 BLOB。AWS DMS 仅在包含主键的表中支持 BLOB 数据类型。

CLOB

VARCHAR(max)

要将此数据类型用于 AWS DMS,必须允许对特定任务使用 CLOB。在 CDC 期间,AWS DMS 仅在包含主键的表中支持 CLOB 数据类型。

NCLOB

NVARCHAR(max)

要将此数据类型用于 AWS DMS,必须允许对特定任务使用 NCLOB。在 CDC 期间,AWS DMS 仅在包含主键的表中支持 NCLOB 数据类型。