将 Microsoft SQL Server 数据库作为 Amazon Database Migration Service 的目标 - Amazon Database Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

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

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

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

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

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

将 SQL Server 数据库作为 Amazon DMS 目标时,存在以下限制:

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

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

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

  • 目前,PostgreSQL 源中的 boolean 数据类型会作为具有不一致值的 bit 数据类型迁移到 SQLServer 目标。解决方法是,使用该列的 VARCHAR(1) 数据类型预先创建表(或者让 Amazon DMS 创建表)。然后,让下游处理将“F”视为 False,将“T”视为 True。

  • 对于 Microsoft SQL 服务器,DMS 不支持自带许可 (BYOL)。有关更多信息,请参阅 。Amazon Web Services 和微软,常见问题.

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

下面介绍将 Amazon DMS 和 Microsoft SQL Server 目标结合使用时的安全要求:

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

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

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

您可以使用额外的连接属性配置 SQL Server 目标。在创建目标终端节点时,您可以指定这些设置。如果您具有多个连接属性设置,请用分号将它们彼此分开,并且不需要额外的空格。

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

名称 描述

useBCPFullLoad

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

默认值:是

有效值:Y/N

示例:useBCPFullLoad=Y

BCPPacketSize

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

默认值:16384

有效值:1–100000

示例:BCPPacketSize=16384

controlTablesFileGroup

为 Amazon DMS 内部表指定文件组。当复制任务开始时,将在指定的文件组上创建所有内部 Amazon 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 的目标数据类型

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

Amazon 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

NUMERIC (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

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

CLOB

VARCHAR(max)

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

NCLOB

NVARCHAR(max)

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