

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 連線至 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-Compatible Edition
+ Amazon RDS for MariaDB
+ Amazon RDS for PostgreSQL
+ Amazon Aurora PostgreSQL-Compatible Edition

如需詳細資訊，請參閱下列章節：

**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>

使用下列程序，透過 連線至 SAP ASE 來源資料庫 AWS Schema Conversion Tool。

**連線至 SAP ASE 來源資料庫**

1. 在 中 AWS Schema Conversion Tool，選擇**新增來源**。

1. 選擇 **SAP ASE**，然後選擇**下一步**。

   **新增來源**對話方塊隨即出現。

1. 在**連線名稱**中，輸入資料庫的名稱。 會在左側面板的樹狀目錄中 AWS SCT 顯示此名稱。

1. 使用來自 的資料庫登入資料 AWS Secrets Manager 或手動輸入：
   + 若要從 Secrets Manager 使用資料庫登入資料，請使用下列指示：

     1. 針對 **AWS Secret**，選擇秘密的名稱。

     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_tw/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
+ 參考開啟 \$1.\$1
+ SELECT ON \$1.\$1
+ 在 \$1.\$1 上建立檢視
+ SHOW VIEW ON \$1.\$1
+ 觸發開啟 \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ INSERT，更新 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>** – 在 PostgreSQL 中使用 SAP ASE 資料庫和結構描述名稱的組合做為結構描述名稱。
+ 在轉換後的程式碼中使用來源資料庫物件的確切名稱。

  根據預設， 會將資料庫物件、變數和參數的名稱 AWS SCT 轉換為小寫。若要保留這些名稱的原始案例，請選取**將來源資料庫物件名稱視為區分大小寫**。如果您在來源 SAP ASE 資料庫伺服器中使用區分大小寫的物件名稱，請選擇此選項。

  對於區分大小寫的操作， AWS SCT 可以避免將資料庫物件名稱轉換為小寫。若要這樣做，請選取**避免轉換為小寫，以進行區分大小寫的操作**。
+ 允許在 SAP ASE 的不同資料表中使用具有相同名稱的索引。

  在 PostgreSQL 中，您在結構描述中使用的所有索引名稱都必須是唯一的。若要確保 AWS SCT 產生所有索引的唯一名稱，請選取**產生索引的唯一名稱**。