

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

# 了解 SQL Server 到 PostgreSQL 的轉換設定
<a name="schema-conversion-sql-server-postgresql"></a>

DMS 結構描述轉換中的 SQL Server 到 PostgreSQL 轉換設定包括下列項目：
+ 若要使用生成式 AI 轉換適用的資料庫物件，請啟用**生成式 AI** 設定。使用生成式 AI 成功轉換的物件將明確識別為**動作項目 7744**，其中說明：「此轉換使用根據資料中的模式產生預測的機器學習模型。」 如需詳細資訊，請參閱[使用生成式 AI 轉換資料庫物件](schema-conversion-convert.databaseobjects.md)。
+ 在 SQL Server 中，您可以在不同的資料表中使用相同的索引名稱。但是在 PostgreSQL 中，您在結構描述中使用的所有索引名稱都必須是唯一名稱。若要確保 DMS 結構描述轉換為您的所有索引產生唯一名稱，請選取**針對索引產生唯一的名稱**。
+ PostgreSQL 10 和更舊版本不支援程序。如果您不熟悉在 PostgreSQL 中使用程序， AWS DMS 可以將 SQL Server 程序轉換為 PostgreSQL 函數。若要這樣做，請選取**將程序轉換為函數**。
+ 您的來源 SQL Server 資料庫可以將 `EXEC` 的輸出儲存在資料表中。DMS 結構描述轉換會建立暫存資料表和其他程序來模擬此功能。若要使用此模擬，請選取**建立其他常式來處理開放資料集**。
+ 您可以定義轉換後程式碼中要用於結構描述名稱的範本。針對**結構描述名稱**，選擇以下其中一個選項：
  + **DB** – 使用 SQL 伺服器資料庫名稱作為 PostgreSQL 中的結構描述名稱。
  + **SCHEMA** – 使用 SQL 伺服器結構描述名稱作為 PostgreSQL 中的結構描述名稱。
  + **DB\$1SCHEMA** – 使用 SQL 伺服器資料庫和結構描述名稱的組合，作為 PostgreSQL 中的結構描述名稱。
+ 您可以在來源運算元的名稱中保留字母大小寫。若要避免將運算元名稱轉換為小寫，請選取**避免轉換為小寫以進行區分大小寫的操作**。只有在來源資料庫中啟用區分大小寫功能時，此選項才適用。
+ 您可以保留來源資料庫中的參數名稱。DMS 結構描述轉換可以在轉換後程式碼的參數名稱中加上雙引號。若要這樣做，請選取**保留原始參數名稱**。
+ 您可以保留來源資料庫的一段常式參數。DMS 結構描述轉換會建立網域，並使用網域來指定一段常式參數。若要這樣做，請選取**保留參數長度**。
+ 若要將不支援的內建物件轉換為 stub 物件，請啟用將**不支援的內建物件轉換為 stub 物件**設定：
  +  啟用時，DMS SC 會將不支援的內建物件取代為目標資料庫中對應的 stub 物件。此功能會轉換通常由遷移問題 7811 或 7904 封閉的程式碼區段。它會根據`PROCEDURE`程序的來源內建物件類型，`VIEW`為檢視或資料表建立 stub 物件。

    使用不支援的物件呼叫轉換來源資料庫物件會導致 stub 物件呼叫和遷移問題 7822。

    您可以透過在個別結構描述選項中啟用建立 stub 物件，選擇**在個別結構描述中建立 stub 物件**。選取時，stub 物件會在目標資料庫中名為 的特殊結構描述`aws_sqlserver_stub`中建立。如果未選取，它們會在與呼叫物件相同的結構描述中建立。
  + Stub 常式是根據原始內建的完整名稱來命名。對於 stub 檢視，命名慣例包含系統結構描述名稱 `system_schema_name$builtin_view_name`。

    在重新轉換期間，DMS SC 會檢查目標資料庫中現有的 stub 常式。如果具有相同名稱和輸入參數的常式已存在，則不會覆寫它。

    轉換後，視需要檢閱和實作 stub 常式的自訂程式碼。
+ `CITEXT` DMS 結構描述轉換中所有字串資料類型設定的資料類型包括下列項目：
  + 若要在從 SQL Server 轉換為 PostgreSQL 時使用不區分大小寫的字串操作的`CITEXT`資料類型，請**為所有字串資料類型設定啟用使用 CITEXT**。此選項有助於在從不區分大小寫的 SQL Server 遷移到區分大小寫的 PostgreSQL 環境時維持一致的行為。
  + 啟用時，DMS SC 會將來源 SQL Server 資料庫的所有相關字串資料類型轉換為 PostgreSQL `CITEXT`中的 。這消除了在條件中對明確 LOWER () 函數呼叫的需求，並自動將條件式操作中的字串表達式轉換為 `CITEXT`。
  + 若要判斷 SQL Server 執行個體是否區分大小寫，請執行下列查詢：

    ```
    SELECT SERVERPROPERTY('COLLATION');
    ```

    包含 'CI' 的結果表示不區分大小寫，而 'CS' 表示區分大小寫。
  + 在伺服器、資料庫或資料欄層級使用明確區分大小寫的定序設定的情況下，`CITEXT`轉換可能不適用。

    若要使用此功能，請確定`CITEXT`已安裝模組且可在目標 PostgreSQL 資料庫中使用。
  + 使用`CITEXT`資料類型轉換時，請考慮下列最佳實務：
    + 從不區分大小寫的 SQL Server 遷移時啟用此功能，以在 PostgreSQL 中維持一致的行為。
    + 檢閱您的應用程式程式碼，以確保它不依賴區分大小寫的字串操作。
    + 在遷移後徹底測試您的應用程式，以確認不區分大小寫的行為如預期般維護。