本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SQL 伺服器到 PostgreSQL 轉換設定
當來源為 Microsoft SQL Server 且目標為 Amazon RDS for PostgreSQL 或 Amazon Aurora PostgreSQL 時,適用下列設定。您可以使用 AWS Management Console 或 ModifyConversionConfiguration API 操作來設定這些設定。
本主題涵蓋 SQL Server 至 PostgreSQL 轉換路徑的特定設定。除了這些設定之外,DMS 結構描述轉換還提供適用於所有來源和目標對的設定,例如轉換後 SQL 中動作項目註解的嚴重性等級,以及使用生成式 AI 轉換的選項。如需這些設定,請參閱 常見的轉換設定。
當您使用 API 或 AWS CLI 時,請在區段名稱 MSSQL_TO_POSTGRESQL、 MSSQL_TO_POSTGRESQL_14或 下指定轉換路徑設定MSSQL_TO_POSTGRESQL_15。所有三個版本控制的區段都接受相同的金鑰。若要尋找專案使用的區段名稱,DescribeConversionConfiguration請先呼叫 ,並僅更新回應中存在的區段。
每個設定都會在括號中顯示 API 和 AWS CLI 參數名稱後面的 AWS Management Console 標籤。使用 API 或 CLI AWS 設定設定時,請使用 參數名稱。
中繼資料設定
控制在轉換期間如何處理來源 SQL Server 中繼資料 – 物件名稱、結構描述結構和索引定義的設定。
- 將來源資料庫物件名稱視為區分大小寫 (
CaseSensitivityNames) -
控制物件名稱 (資料表、資料欄、程序等) 在轉換期間如何處理。
-
true— 物件名稱會保留在原始案例中,並以雙引號識別符 (例如"MyTable") 包裝。當您的應用程式使用混合大小寫名稱參考物件時,請使用此選項。 -
false— 物件名稱會摺疊為小寫而不加上引號 (例如mytable)。這符合預設 PostgreSQL 案例折疊行為。
類型:布林值 (
true|false)預設:
false -
- 產生索引的唯一名稱 (
UniqueIndexGeneration) -
控制 DMS 結構描述轉換是否在目標 PostgreSQL 結構描述中產生唯一的索引名稱。在 SQL Server 中,索引可以在不同的資料表之間共用相同的名稱。在 PostgreSQL 中,結構描述中的所有索引名稱都必須是唯一的。
-
true— DMS 結構描述轉換會為所有索引產生唯一名稱,並視需要附加尾碼以避免衝突。當您的來源結構描述在不同資料表上有相同名稱的索引時,請使用此選項。 -
false— 索引名稱會依原樣從來源保留。如果多個資料表上存在相同的索引名稱,則 PostgreSQL 的部署可能會失敗,並出現重複的名稱錯誤。
類型:布林值 (
true|false)預設:
true -
- 將程序轉換為函數 (
ConvertProceduresToFunction) -
控制預存程序是否轉換為 PostgreSQL 函數或程序。
-
false— 程序會轉換為 PostgreSQLPROCEDURE物件 (需要 PostgreSQL 11 或更新版本)。 -
true— 傳回結果集的程序會轉換為 PostgreSQLFUNCTION物件。當您的應用程式從程序呼叫讀取結果集,或將 PostgreSQL 10 或更早版本設為目標時,請使用此選項。
類型:布林值 (
true|false)預設:
false -
- 建立其他常式來處理開啟的資料集 (
OpenDatasetsProcedures) -
控制將 輸出儲存
EXEC到資料表的程序如何轉換。-
false— 這些模式會保留為動作項目。 -
true— DMS 結構描述轉換會建立暫存資料表和額外的程序,以在目標上模擬此模式。
類型:布林值 (
true|false)預設:
false -
- 結構描述名稱 (
SchemaNameTemplate) -
控制如何從 SQL Server 兩部分命名慣例 (資料庫 + 結構描述) 產生目標 PostgreSQL 結構描述名稱。
主控台標籤 API/CLI 值 產生的目標結構描述名稱 DB_SCHEMA DB_SCHEMAdatabase_schema(例如,AdventureWorks_dbo)。將多個資料庫遷移至相同的 PostgreSQL 執行個體時使用 ,以避免名稱衝突。資料庫 DB資料庫(例如,AdventureWorks)。結構描述 SCHEMA結構描述(例如,dbo)。遷移單一資料庫時使用 ,而且您想要乾淨的結構描述名稱,但沒有資料庫字首。類型:字串 (列舉)
預設:
DB_SCHEMA
SQL 程式碼設定
控制 SQL Server 程式碼在轉換期間如何處理識別符、參數、資料類型和不支援函數的設定。
- 將物件名稱保留在相同的案例中 (
AvoidCastingToLowerCase) -
控制 DMS 結構描述轉換是否在轉換後的程式碼中新增圍繞識別符的自動
LOWER()轉換。-
false— DMS 結構描述轉換會視需要新增LOWER()轉換,以標準化案例比較。 -
true— 不會新增自動LOWER()轉換。當您的 PostgreSQL 資料庫使用citext擴充功能或不區分大小寫的定序,以原生方式處理比較時,請使用此選項。
類型:布林值 (
true|false)預設:
false注意
此設定
UseCitextForAllStringDatatypes在啟用時沒有作用。當所有字串類型映射到 時CITEXT,不區分大小寫的比較會由類型本身原生處理,因此無論此設定為何,都不會產生LOWER()轉換。 -
- 保留原始參數名稱 (
KeepOriginalParameterManes) -
控制是否將來自 T-SQL 常式的原始參數名稱保留在轉換後的 PostgreSQL 常式簽章中。
-
false— 參數可以重新命名,以避免與 PostgreSQL 預留單字或命名慣例發生衝突。 -
true— 原始參數名稱會逐字保留。當您的應用程式使用具名參數語法 (例如 ) 呼叫常式時,請使用此選項my_proc(param_name => value)。
類型:布林值 (
true|false)預設:
false注意
API 參數名稱為
KeepOriginalParameterManes(以 Manes 結尾,而非 Names)。呼叫 API 或 CLI AWS 時,請使用此精確拼寫。使用KeepOriginalParameterNames將無法運作。 -
- 對所有字串資料類型使用 CITEXT (
UseCitextForAllStringDatatypes) -
控制所有字元資料欄和參數的目標資料類型。
-
false— 字元類型 (CHAR、VARCHARNCHAR、、NVARCHAR) 會對應至對應的 PostgreSQL 類型。 -
true— 所有字元類型都對應到CITEXT(不區分大小寫的文字)。從不區分大小寫的 SQL Server 定序遷移時使用此參數,而且您想要在 PostgreSQL 中保留該行為,而不修改查詢。
類型:布林值 (
true|false)預設:
false注意
啟用此設定時,DMS 結構描述轉換會自動
CREATE EXTENSION IF NOT EXISTS citext;新增至轉換後的結構描述指令碼 (套用到目標時和儲存到檔案時)。不過,在您套用轉換後的結構描述之前,citext模組必須在目標 PostgreSQL 資料庫中可用。啟用
UseCitextForAllStringDatatypes時,將物件名稱保留在相同的大小寫 (AvoidCastingToLowerCase) 設定中沒有效果,因為 原生CITEXT處理不區分大小寫的比較。 -
- 將不支援的內建物件轉換為 stub 物件 (
ConvUnsupportedBuiltinsToStubs) -
控制 DMS 結構描述轉換遇到沒有直接 PostgreSQL 對等的 T-SQL 內建函數時會發生的情況。
-
false— 不支援的函數會保留為評估報告中的動作項目。轉換的物件會標記為需要手動檢閱。 -
true— 不支援的函數會取代為具有相同簽章但引發執行時間錯誤的 stub 函數。轉換後的物件會成功編譯,讓您先部署和測試結構描述的其餘部分,再處理個別的 stub。Stub 函數會產生遷移問題 7822。
類型:布林值 (
true|false)預設:
false -
- 在個別結構描述中建立 stub 物件 (
CreateStubsInSeparateSchema) -
控制
ConvUnsupportedBuiltinsToStubs啟用時放置 stub 物件的位置。-
false— Stub 物件是在與呼叫物件相同的結構描述中建立的。 -
true— Stub 物件會放置在目標上的專用aws_sqlserver_stub結構描述中。使用此選項可隔離 stub 程式碼與轉換的應用程式物件。
類型:布林值 (
true|false)預設:
false -
範例:將 SQL Server 設定為 PostgreSQL 設定
下列範例會設定 SchemaNameTemplate、 ConvertProceduresToFunction和 UseCitextForAllStringDatatypes。將相同的設定套用至專案使用的每個區段名稱 (DescribeConversionConfiguration先檢查 的輸出)。
{ "MSSQL_TO_POSTGRESQL_15": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL_14": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true }, "MSSQL_TO_POSTGRESQL": { "SchemaNameTemplate": "SCHEMA", "ConvertProceduresToFunction": true, "UseCitextForAllStringDatatypes": true } }