

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

# 使用 SAP ASE 数据库作为来源 AWS DMS
<a name="CHAP_Source.SAP"></a>

您可以使用从 SAP Adaptive Server Enterprise (ASE) 数据库（以前称为 Sybase）迁移数据。 AWS DMS使用 SAP ASE 数据库作为源，您可以将数据迁移到任何其他支持的 AWS DMS 目标数据库。

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

有关使用 SAP ASE 数据库和的更多详细信息 AWS DMS，请参阅以下各节。

**Topics**
+ [使用 SAP ASE 数据库作为源的先决条件 AWS DMS](#CHAP_Source.SAP.Prerequisites)
+ [使用 SAP ASE 作为来源的限制 AWS DMS](#CHAP_Source.SAP.Limitations)
+ [使用 SAP ASE 作为来源所需的权限 AWS DMS](#CHAP_Source.SAP.Security)
+ [删除截断点](#CHAP_Source.SAP.Truncation)
+ [使用 SAP ASE 作为来源时的端点设置 AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)
+ [SAP ASE 的源数据类型](#CHAP_Source.SAP.DataTypes)

## 使用 SAP ASE 数据库作为源的先决条件 AWS DMS
<a name="CHAP_Source.SAP.Prerequisites"></a>

要将 SAP ASE 数据库作为其来源 AWS DMS，请执行以下操作：
+ 使用 `sp_setreptable` 命令为表启用 SAP ASE 复制。有关更多信息，请参阅 [Sybase Infocenter 存档]( http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc32410_1501/html/refman/X37830.htm)。
+ 在 SAP ASE 数据库上禁用 `RepAgent`。有关更多信息，请参阅[停止和禁用主数据库中的 RepAgent 线程](http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc20096_1260/html/mra126ag/mra126ag65.htm)。
+ 要在配置为非拉丁字符（例如中文）的 Windows EC2 实例上复制到 SAP ASE 15.7 版，请在目标计算机 SP121上安装 SAP ASE 15.7。

**注意**  
对于持续的更改数据捕获（CDC）复制，DMS 会运行 `dbcc logtransfer` 和 `dbcc log`，以从事务日志中读取数据。

## 使用 SAP ASE 作为来源的限制 AWS DMS
<a name="CHAP_Source.SAP.Limitations"></a>

将 SAP ASE 数据库作为 AWS DMS源时，存在以下限制：
+ 对于每个 SAP ASE 数据库，您只能使用持续复制或 CDC 运行 AWS DMS 一项任务。您可以并行运行多个 full-load-only任务。
+ 您不能重命名表。例如，下面的命令将失败。

  ```
  sp_rename 'Sales.SalesRegion', 'SalesReg;
  ```
+ 您不能重命名列。例如，下面的命令将失败。

  ```
  sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';
  ```
+ 在复制到目标数据库时，将截断位于二进制数据类型字符串末尾的零值。例如，源表中的 `0x0000000000000000000000000100000100000000` 在目标表中变为 `0x00000000000000000000000001000001`。
+ 如果将数据库默认值设置为不允许 NULL 值，则使用不允许 NULL 值的列 AWS DMS 创建目标表。因此，如果满载或 CDC 复制任务包含空值，则 AWS DMS 会引发错误。您可以执行以下命令以允许在源数据库中包含 NULL 值，从而防止出现这些错误。

  ```
  sp_dboption database_name, 'allow nulls by default', 'true'
  go
  use database_name
  CHECKPOINT
  go
  ```
+ 不支持 `reorg rebuild` 索引命令。
+ AWS DMS 不支持群集或使用 MSA（多站点可用性）/热备用作为源。
+ 在映射规则中使用 `AR_H_TIMESTAMP` 转换标头表达式时，不会捕获已添加列的毫秒数。
+ 在 CDC 期间运行合并操作将导致不可恢复的错误。要使目标恢复同步，请运行完全加载。
+ 使用数据行锁定方案的表不支持回滚触发器事件。
+ AWS DMS 从源 SAP 数据库中删除任务范围内的表后，无法恢复复制任务。如果 DMS 复制任务已停止并执行了任何 DML 操作（INSERT、UPDATE、DELETE），然后删除了表，则必须重新启动复制任务。

## 使用 SAP ASE 作为来源所需的权限 AWS DMS
<a name="CHAP_Source.SAP.Security"></a>

要在 AWS DMS 任务中使用 SAP ASE 数据库作为源，您需要授予权限。向 AWS DMS 数据库定义中指定的用户帐户授予在 SAP ASE 数据库中的以下权限：
+ sa\$1role
+ replication\$1role
+ sybase\$1ts\$1role
+ 默认情况下，如果需要拥有运行`sp_setreptable`存储过程的权限，则 AWS DMS 启用 SAP ASE 复制选项。如果要直接从数据库端点而不是通过其 AWS DMS 自身在表`sp_setreptable`上运行，则可以使用 e `enableReplication` xtra 连接属性。有关更多信息，请参阅 [使用 SAP ASE 作为来源时的端点设置 AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)。

## 删除截断点
<a name="CHAP_Source.SAP.Truncation"></a>

任务启动时，会在`syslogshold`系统视图中 AWS DMS 建立一个`$replication_truncation_point`条目，表示复制过程正在进行中。 AWS DMS 在工作时，它会根据已经复制到目标的数据量定期推进复制截断点。

建立条`$replication_truncation_point`目后，请保持 AWS DMS 任务运行以防止数据库日志变得过大。如果要永久停止 AWS DMS 任务，请发出以下命令来移除复制截断点：

```
dbcc settrunc('ltm','ignore')
```

删除截断点后，您将无法继续执行任务。 AWS DMS 日志将继续在检查点自动截断 (在设置了自动截断时)。

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

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

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

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

## SAP ASE 的源数据类型
<a name="CHAP_Source.SAP.DataTypes"></a>

有关使用时支持的 SAP ASE 源数据类型列表 AWS DMS 以及 AWS DMS 数据类型的默认映射，请参阅下表。 AWS DMS 不支持包含用户定义类型 (UDT) 数据类型列的 SAP ASE 源表。具有此数据类型的复制列将创建为 NULL。

有关如何查看目标中映射的数据类型的信息，请参阅[数据迁移的目标](CHAP_Target.md)有关您的目标终端节点的部分。

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


|  SAP ASE 数据类型  |  AWS DMS 数据类型  | 
| --- | --- | 
| BIGINT | INT8 | 
| UNSIGNED BIGINT | UINT8 | 
| INT | INT4 | 
| UNSIGNED INT | UINT4 | 
| SMALLINT | INT2 | 
| UNSIGNED SMALLINT | UINT2 | 
| TINYINT | UINT1 | 
| DECIMAL | NUMERIC | 
| NUMERIC | NUMERIC | 
| FLOAT | REAL8 | 
| DOUBLE | REAL8 | 
| REAL | REAL4 | 
| MONEY | NUMERIC | 
| SMALLMONEY | NUMERIC | 
| DATETIME | DATETIME | 
| BIGDATETIME | DATETIME(6) | 
| SMALLDATETIME | DATETIME | 
| DATE | DATE | 
| TIME | TIME | 
| BIGTIME | TIME | 
| CHAR | string | 
| UNICHAR | WSTRING | 
| NCHAR | WSTRING | 
| VARCHAR | string | 
| UNIVARCHAR | WSTRING | 
| NVARCHAR | WSTRING | 
| BINARY | BYTES | 
| VARBINARY | BYTES | 
| BIT | BOOLEAN | 
| TEXT | CLOB | 
| UNITEXT | NCLOB | 
| IMAGE | BLOB | 