本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Microsoft SQL Server 数据库作为 AWS Database Migration Service 的目标
您可以使用 AWS DMS 将数据迁移到 Microsoft SQL Server 数据库。将 SQL Server 数据库作为目标时,您可以从另一个 SQL Server 数据库或其他支持的数据库之一迁移数据。
有关 AWS DMS 支持作为目标的 SQL Server 版本的信息,请参阅的目标 AWS DMS。
AWS DMS 支持 Enterprise、Standard、Workgroup 和 Developer 版的本地和 Amazon RDS 版本。
有关使用 AWS DMS 和 SQL Server 目标数据库的其他详细信息,请参阅以下内容。
主题
将 SQL Server 作为 AWS Database Migration Service 目标的限制
将 SQL Server 数据库作为 AWS DMS 目标时,存在以下限制:
-
在您手动创建带有计算列的 SQL Server 目标表时,如果使用 BCP 批量复制实用程序,则不支持完全加载复制。要使用完全加载复制,请通过在端点上设置额外连接属性 (ECA)
'useBCPFullLoad=false'
来禁用 BCP 加载。有关在端点上设置 ECA 的信息,请参阅创建源和目标终端节点。有关使用 BCP 的更多信息,请参阅 Microsoft SQL Server 文档。 -
在复制带有 SQL Server 空间数据类型(GEOMETRY 和 GEOGRAPHY)的表时,AWS DMS 使用默认空间引用标识符 (SRID) 替换所有您可能插入的 SRID。对于 GEOMETRY,默认 SRID 为 0,对于 GEOGRAPHY,则为 4326。
-
不支持临时表。在事务性应用模式下,如果在目标中手动创建这些表,则迁移临时表可能适用于仅复制任务。
-
目前,PostgreSQL 源中的
boolean
数据类型会作为具有不一致值的bit
数据类型迁移到 SQLServer 目标。作为解决方法,请执行下列操作:
使用该列的
VARCHAR(1)
数据类型预先创建表(或者让 AWS DMS 创建表)。然后,让下游处理将“F”视为 False,将“T”视为 True。为避免出现必须更改下游处理的情况,请在任务中添加转换规则,将“F”值更改为“0”,将“T”值更改为 1,并将它们存储为 SQL Server 位数据类型。
-
AWS DMS 不支持通过更改处理来设置列的可空性(使用带
ALTER COLUMN [SET|DROP] NOT NULL
子句的ALTER TABLE
语句)。 -
不支持 Windows 身份验证。
将 SQL Server 作为 AWS Database Migration Service 目标时的安全要求
下面介绍将 AWS DMS 和 Microsoft SQL Server 目标结合使用时的安全要求:
-
AWS DMS 用户账户必须在要连接到的 SQL Server 数据库上至少具有
db_owner
用户角色。 -
SQL Server 系统管理员必须向所有 AWS DMS 用户账户提供此权限。
使用 SQL Server 作为 AWS DMS 的目标时的端点设置
您可以使用端点设置来配置 SQL Server 目标数据库,这与使用额外连接属性类似。您可以在使用 AWS DMS 控制台创建目标端点时指定设置,或者在 AWS CLI 中使用符合 --microsoft-sql-server-settings '{"
JSON 语法的 EndpointSetting"
:
"value"
, ...
}'create-endpoint
命令。
下表显示了将 SQL Server 作为目标时您可以使用的端点设置。
名称 | 描述 |
---|---|
|
为 AWS DMS 内部表指定文件组。当复制任务开始时,将在指定的文件组上创建所有内部 AWS DMS 控制表(awsdms_ apply_exception、awsdms_apply、awsdms_changes)。 默认值:无 有效值:字符串 例如: 以下是用于创建文件组的命令的示例。
|
|
使用此额外连接属性 (ECA) 设置 SQL Server 实例的客户端语句超时时间(以秒为单位)。默认值为 60 秒。 例如: |
|
使用该属性为使用 BCP 的完全加载操作传输数据。如果目标表包含的身份列在源表中不存在,必须禁用使用 BCP 加载表选项。 默认值:true 有效值:true/false 例如: |
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(精度)。 对于早期版本,如果小数位数等于或小于 3,请使用 DATETIME。在所有其他情况下,请使用 VARCHAR (37)。 |
INT1 |
SMALLINT |
INT2 |
SMALLINT |
INT4 |
INT |
INT8 |
BIGINT |
NUMERIC |
NUMERIC (p,s) |
REAL4 |
REAL |
REAL8 |
FLOAT |
STRING |
如果列是日期或时间列,请执行以下操作:
如果列不是日期或时间列,请使用 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 数据类型。 |