

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

# 使用连接到 SAP 数据库 AWS Schema Conversion Tool
<a name="CHAP_Source.SAP"></a>

您可以使用 AWS SCT 将架构、数据库代码对象和应用程序代码从 SAP (Sybase) Adaptive Server Enterprise (ASE) 转换为以下目标：
+ Amazon RDS for MySQL
+ Amazon Aurora MySQL 兼容版
+ Amazon RDS for MariaDB
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL 兼容版

有关详细信息，请参阅以下章节：

**Topics**
+ [将 SAP ASE 用作源数据库的权限](#CHAP_Source.SAP.Permissions)
+ [连接到作为源的 SAP ASE (Sybase)](#CHAP_Source.SAP.Connecting)
+ [将 MySQL 用作目标数据库的权限](#CHAP_Source.SAP.ConfigureMySQL)
+ [SAP ASE 到 MySQL 的转换设置](#CHAP_Source.SAP.MySQLConversionSettings)
+ [将 PostgreSQL 用作目标数据库的权限](#CHAP_Source.SAP.ConfigurePostgreSQL)
+ [SAP ASE 到 PostgreSQL 的转换设置](#CHAP_Source.SAP.PostgreSQLConversionSettings)

## 将 SAP ASE 用作源数据库的权限
<a name="CHAP_Source.SAP.Permissions"></a>

要将 SAP ASE 数据库作为源，您需要创建数据库用户并授予权限。为此，请执行以下步骤：

**创建和配置数据库用户**

1. 连接到源数据库。

1. 使用以下命令创建数据库用户。提供新用户密码。

   ```
   USE master
   CREATE LOGIN min_privs WITH PASSWORD <password>
   sp_adduser min_privs
   grant select on dbo.spt_values to min_privs
   grant select on asehostname to min_privs
   ```

1. 为要迁移的每个数据库授予以下权限。

   ```
   USE <database_name>
   sp_adduser min_privs
   grant select on dbo.sysusers to min_privs
   grant select on dbo.sysobjects to min_privs
   grant select on dbo.sysindexes to min_privs
   grant select on dbo.syscolumns to min_privs
   grant select on dbo.sysreferences to min_privs
   grant select on dbo.syscomments to min_privs
   grant select on dbo.syspartitions to min_privs
   grant select on dbo.syspartitionkeys to min_privs
   grant select on dbo.sysconstraints to min_privs
   grant select on dbo.systypes to min_privs
   grant select on dbo.sysqueryplans to min_privs
   ```

## 连接到作为源的 SAP ASE (Sybase)
<a name="CHAP_Source.SAP.Connecting"></a>

使用 AWS Schema Conversion Tool按照以下过程连接到 SAP ASE 源数据库。

**连接到 SAP ASE 源数据库**

1. 在中 AWS Schema Conversion Tool，选择**添加来源**。

1. 选择 **SAP ASE**，然后选择**下一步**。

   此时显示**添加源**对话框。

1. 对于**连接名称**，输入数据库的名称。 AWS SCT 会在左侧面板的树中显示此名称。

1. 使用来自的数据库凭据 AWS Secrets Manager 或手动输入：
   + 要使用 Secrets Manager 中的数据库凭证，请按照以下说明进行操作：

     1. 对于 **AWS 密钥**，请选择密钥的名称。

     1. 选择**填充**可使用 Secrets Manager 中的数据库凭证自动填写数据库连接对话框中的所有值。

     有关使用 Secrets Manager 中的数据库凭证的信息，请参阅[AWS Secrets Manager 在中配置 AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md)。
   + 要手动输入 SAP ASE 源数据库连接信息，请按照以下说明进行操作：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/SchemaConversionTool/latest/userguide/CHAP_Source.SAP.html)

1. 选择 “**测试连接**” 以验证是否 AWS SCT 可以连接到您的源数据库。

1. 选择**连接**以连接到源数据库。

## 将 MySQL 用作目标数据库的权限
<a name="CHAP_Source.SAP.ConfigureMySQL"></a>

下面列出了将 MySQL 用作目标所需的权限：
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ 插入，在 AWS\$1SAPASE \$1EXT 上更新。 \$1
+ 在 AWS\$1SAPASE \$1EXT 上创建临时表。 \$1

您可以使用以下代码示例创建数据库用户并授予权限。

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT INSERT, UPDATE ON AWS_SAPASE_EXT.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_SAPASE_EXT.* TO 'user_name';
```

在前面的示例中，*user\$1name*使用您的用户名替换。然后，*your\$1password*替换为安全密码。

要使用 Amazon RDS for MySQL 或 Aurora MySQL 作为目标，请将 `lower_case_table_names` 参数设置为 `1`。此值意味着 MySQL 服务器在处理表、索引、触发器和数据库等对象名称的标识符时不区分大小写。如果目标实例中已开启二进制日志记录，请将 `log_bin_trust_function_creators` 参数设置为 `1`。在这种情况下，您无需使用 `DETERMINISTIC`、`READS SQL DATA` 或 `NO SQL` 特性创建存储函数。要配置这些参数，请创建新的数据库参数组或修改现有数据库参数组。

## SAP ASE 到 MySQL 的转换设置
<a name="CHAP_Source.SAP.MySQLConversionSettings"></a>

要编辑 SAP ASE 到 MySQL 的转换设置，请选择**设置**，然后选择**转换设置**。从上面的列表中选择 **SAP ASE**，然后选择 **SAP ASE – MySQL** 或 **SAP ASE – Amazon Aurora（兼容 MySQL）**。 AWS SCT 显示 SAP ASE 到 PostgreSQL 转换的所有可用设置。

中的 SAP ASE 到 MySQL 的转换设置 AWS SCT 包括以下选项：
+ 限制转换后的代码中操作项的注释数量。

  对于在**转换后的代码中为所选严重性及更高的措施项添加注释**，请选择措施项的严重性。 AWS SCT 在转换后的代码中为选定严重性及更高的措施项添加注释。

  例如，要最大限度地减少转换后的代码中的注释数量，请选择**仅错误**。要在转换后的代码中包含所有操作项的注释，请选择**所有消息**。
+ 在转换后的代码中使用源数据库对象的确切名称。

  默认情况下， AWS SCT 将数据库对象、变量和参数的名称转换为小写。要保持这些名称的原始大小写，请选择**源数据库对象名称区分大小写**。如果源 SAP ASE 数据库服务器中使用区分大小写的对象名称，请选择此选项。

## 将 PostgreSQL 用作目标数据库的权限
<a name="CHAP_Source.SAP.ConfigurePostgreSQL"></a>

要使用 PostgreSQL 作为目标 AWS SCT ，需要权限。`CREATE ON DATABASE`请确保为每个目标 PostgreSQL 数据库授予此权限。

要使用转换后的公共同义词，请将数据库的默认搜索路径更改为 `"$user", public_synonyms, public`。

您可以使用以下代码示例创建数据库用户并授予权限。

```
CREATE ROLE user_name LOGIN PASSWORD 'your_password';
GRANT CREATE ON DATABASE db_name TO user_name;
ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;
```

在前面的示例中，*user\$1name*使用您的用户名替换。然后，*db\$1name*替换为目标数据库的名称。最后，*your\$1password*替换为安全密码。

在 PostgreSQL 中，只有架构所有者或 `superuser` 才能删除架构。即使架构的所有者并不拥有架构的某些对象，该所有者也可以删除该架构及其包含的所有对象。

当你使用不同的用户转换不同的架构并将其应用到目标数据库时，当无法删除架构时，你 AWS SCT 可能会收到一条错误消息。要避免出现此错误消息，请使用 `superuser` 角色。

## SAP ASE 到 PostgreSQL 的转换设置
<a name="CHAP_Source.SAP.PostgreSQLConversionSettings"></a>

要编辑 SAP ASE 到 PostgreSQL 的转换设置，请选择**设置**，然后选择**转换设置**。从上面的列表中选择 **SAP ASE**，然后选择 **SAP ASE – PostgreSQL** 或 **SAP ASE – Amazon Aurora（兼容 PostgreSQL）**。 AWS SCT 显示 SAP ASE 到 PostgreSQL 转换的所有可用设置。

中的 SAP ASE 到 PostgreSQL AWS SCT 的转换设置包括以下选项：
+ 限制转换后的代码中操作项的注释数量。

  对于在**转换后的代码中为所选严重性及更高的措施项添加注释**，请选择措施项的严重性。 AWS SCT 在转换后的代码中为选定严重性及更高的措施项添加注释。

  例如，要最大限度地减少转换后的代码中的注释数量，请选择**仅错误**。要在转换后的代码中包含所有操作项的注释，请选择**所有消息**。
+ 定义要在转换后的代码中用于架构名称的模板。对于**架构名称生成模板**，选择以下选项之一：
  + **<source\$1db>**：使用 SAP ASE 数据库名称作为 PostgreSQL 中的架构名称。
  + **<source\$1schema>**：使用 SAP ASE 架构名称作为 PostgreSQL 中的架构名称。
  + **<source\$1db>\$1<schema>**：使用 SAP ASE 数据库名称和架构名称的组合作为 PostgreSQL 中的架构名称。
+ 在转换后的代码中使用源数据库对象的确切名称。

  默认情况下， AWS SCT 将数据库对象、变量和参数的名称转换为小写。要保持这些名称的原始大小写，请选择**源数据库对象名称区分大小写**。如果源 SAP ASE 数据库服务器中使用区分大小写的对象名称，请选择此选项。

  对于区分大小写的操作， AWS SCT 可以避免将数据库对象名称转换为小写。为此，请选择**避免将区分大小写的操作转换为小写**。
+ 允许在 SAP ASE 的不同表中使用同名索引。

  在 PostgreSQL 中，架构中使用的所有索引名称都必须是唯一的。要确保为所有索引 AWS SCT 生成唯一的名称，请选择 “**为索引生成唯一名称**”。