將 SQL Server 資料庫遷移至 Babelfish for Aurora PostgreSQL - Amazon Aurora

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

將 SQL Server 資料庫遷移至 Babelfish for Aurora PostgreSQL

您可以使用 Babelfish for Aurora PostgreSQL 將 SQL Server 資料庫遷移至 Amazon Aurora PostgreSQL 資料庫叢集。遷移之前,請檢閱搭配單一資料庫或多個資料庫來使用 Babelfish

遷移程序概觀

下列摘要列出成功遷移 SQL Server 應用程式並使其適用於 Babelfish 所需的步驟。如需與可用於匯出與匯入程序的工具相關的資訊,或其他詳細資料,請參閱 用於從 SQL Server 遷移至 Babelfish 的匯入/匯出工具。若要載入資料,建議您使用 AWS DMS 搭配 Aurora PostgreSQL 資料庫叢集做為目標端點。

  1. 建立一個 Babelfish 開啟的新 Aurora PostgreSQL 資料庫叢集。如要瞭解如何作業,請參閱建立 Babelfish for Aurora PostgreSQL DB 叢集

    若要匯入從 SQL Server 資料庫匯出的各種 SQL 成品,請使用 SQL Server 工具 (例如 sqlcmd) 來連線至 Babelfish 叢集。如需詳細資訊,請參閱使用 SQL Server 用戶端來連線至資料庫叢集

  2. 在您要遷移的 SQL Server 資料庫上,匯出資料定義語言 (DDL)。DDL 是描述資料庫物件的 SQL 程式碼,這些物件包含使用者資料 (例如資料表、索引和檢視表) 和使用者撰寫的資料庫程式碼 (例如預存程序、使用者定義函數和觸發程序)。

    如需詳細資訊,請參閱使用 SQL Server Management Studio (SSMS) 遷移至 Babelfish

  3. 執行評估工具來評估您可能需要進行任何變更的範圍,讓 Babelfish 能夠有效地支援在 SQL Server 上執行的應用程式。如需詳細資訊,請參閱評估和處理 SQL Server 與 Babelfish 之間的差異

  4. 檢閱 AWS DMS 目標端點限制,並視需要更新 DDL 指令碼。如需詳細資訊,請參閱使用 Babelfish for Aurora PostgreSQL 做為目標中的將 PostgreSQL 目標端點與 Babelfish 資料表搭配使用的限制。 PostgreSQL

  5. 在新的 Babelfish 資料庫叢集上,於您指定的 T-SQL 內執行 DDL,以僅建立結構描述、使用者定義的資料類型,以及具有主索引鍵條件約束的資料表。

  6. 使用 AWS DMS 將資料從 SQL Server 遷移至 Babelfish 資料表。對於使用 SQL Server 變更資料擷取或 SQL 複寫的連續複寫,請使用 Aurora PostgreSQL 而不是 Babelfish 作為端點。若要這樣做,請參閱使用 Babelfish for Aurora PostgreSQL 作為 AWS Database Migration Service的目標

  7. 資料載入完成時,建立所有支援 Babelfish 叢集上應用程式的剩餘 T-SQL 物件。

  8. 將用戶端應用程式重新設定成連線至 Babelfish 端點,而不是 SQL Server 資料庫。如需詳細資訊,請參閱連線至 Babelfish 資料庫叢集

  9. 視需要修改應用程式並重新測試。如需詳細資訊,請參閱Babelfish for Aurora PostgreSQL 與 SQL Server 之間的差異

您仍然需要評估您的用戶端 SQL 查詢。從 SQL Server 執行個體產生的結構描述僅轉換伺服器端 SQL 程式代碼。建議您採取下列步驟:

  • 透過將 SQL Server Profiler 與 TSQL_Replay 預先定義的範本搭配使用,來擷取用戶端查詢。此範本會擷取 T-SQL 陳述式資訊,之後您可以重播這些資訊以進行反覆調校與測試。您可以從 Tools (工具) 功能表啟動 SQL Server Management Studio 內的分析工具。選擇 SQL Server Profiler 開啟分析器,然後選擇 TSQL_Replay 範本。

    若要用於 Babelfish 遷移,請啟動追蹤,然後使用功能測試執行應用程式。分析器會擷取 T-SQL 陳述式。完成測試後,請停止追蹤。將結果連同您的用戶端查詢儲存至 XML 檔案 (File (檔案) > Save as (另存新檔) > Trace XML File for Replay (追蹤用於重播的 XML 檔案))。

    如需詳細資訊,請參閱 Microsoft 文件中的 SQL Server Profiler。如需 TSQL_Replay 範本的詳細資訊,請參閱 SQL Server Profiler 範本

  • 如果應用程式執行複雜的用戶端 SQL 查詢,建議您使用 Babelfish Compass 來分析這些查詢是否相容於 Babelfish。如果分析指出用戶端 SQL 陳述式包含不支援的 SQL 功能,請檢閱用戶端應用程式的 SQL 部分,並視需要修改。

  • 您也可以擷取 SQL 查詢作為延伸事件 (.xel 格式)。若要這樣做,請使用 SSMS XEvent Profiler。在產生 .xel 檔案之後,請將 SQL 陳述式擷取到 Compass 隨後可以處理的 .xml 檔案。如需詳細資訊,請參閱 Microsoft 文件中的使用 SSMS XEvent Profler

如果您對所遷移應用程式需要的所有測試、分析和任何修改都滿意,便可開始將 Babelfish 資料庫用於生產環境。若要這麼做,請停止原始資料庫,並將即時用戶端應用程式轉向使用 Babelfish TDS 連接埠。

注意

AWS DMS 現在支援從 Babelfish 複寫資料。如需詳細資訊,請參閱 AWS DMS 現在支援 Babelfish for Aurora PostgreSQL 做為來源

評估和處理 SQL Server 與 Babelfish 之間的差異

為了獲得最佳結果,建議您先評估產生的 DDL/DML 和用戶端查詢程式碼,再真正地將 SQL Server 資料庫應用程式遷移到 Babelfish。根據 Babelfish 的版本及應用程式實作的 SQL Server 特有功能,您可能需要重構您的應用程式,或使用 Babelfish 中尚未完全支援功能的替代功能。

  • 若要評估 SQL Server 應用程式碼,請在產生的 DDL 上使用 Babelfish Compass,來判斷 Babelfish 對 T-SQL 程式碼支援的程度。在 Babelfish 上執行之前,請找出可能需要修改的 T-SQL 程式碼。如需此工具的詳細資訊,請參閱 GitHub 上的 Babelfish Compass 工具

    注意

    Babelfish Compass 是一種開放原始碼工具。請透過 GitHub 回報 Babelfish Compass 的任何問題,而不是透過 AWS Support。

您可以使用產生指令碼精靈搭配 SQL Server Management Studio (SSMS),來產生由 Babelfish Compass 或 AWS Schema Conversion Tool CLI 評估的 SQL 檔案。我們建議採取下列步驟來簡化評估。

  1. Choose Objects (選擇物件) 頁面上,選擇 Script entire database and all database objects (編寫整個資料庫和所有資料庫物件的指令碼)。

    使用 SSMS 產生指令碼精靈來選擇物件。
  2. 針對 Set Scripting Options (設定指令碼選項),選擇 Save as script file (儲存為指令碼檔案) 作為 Single script file (單一指令碼檔案)。

    使用 SSMS 產生指令碼精靈來設定指令碼選項。
  3. 選擇 Advanced (進階) 來變更預設指令碼選項,以識別通常設定為 false 進行完整評估的功能:

    • Script Change Tracking (指令碼變更追蹤) 設為 True

    • Script Full-Text Indexes (指令碼全文檢索) 設為 True

    • Script Triggers (指令碼觸發條件) 設為 True

    • Script Logins (指令碼登入) 設為 True

    • Script Owner (指令碼擁有者) 設為 True

    • Script Object-Level Permissions (指令碼物件層級許可) 設為 True

    • Script Collations (指令碼定序) 設為 True

    使用 SSMS 產生指令碼精靈來設定進階指令碼選項。
  4. 執行精靈中的其餘步驟來產生檔案。

用於從 SQL Server 遷移至 Babelfish 的匯入/匯出工具

我們建議您使用 AWS DMS 做為從 SQL Server 遷移至 Babelfish 的主要工具。不過,Babelfish 支援數種其他方式,使用 SQL Server 工具遷移資料,其中包括下列項目。

  • SQL Server Integration Services (SSIS),適用於 Babelfish 的所有版本。如需詳細資訊,請參閱使用 SSIS 和 Babelfish 從 SQL Server 遷移至 Aurora PostgreSQL

  • 針對 Babelfish 2.1.0 及更新版本使用 SSMS 匯入/匯出精靈。此工具可透過 SSMS 取得,但也可作為獨立工具使用。如需詳細資訊,請參閱 Microsoft 文件中的歡迎使用 SQL Server 匯入和匯出精靈

  • Microsoft 大量資料複製程式 (bcp) 公用程式可讓您將 Microsoft SQL Server 執行個體中的資料以您指定的格式複製到資料檔案。如需詳細資訊,請參閱 Microsoft 文件中的 bcp 公用程式。Babelfish 現在支援使用 BCP 用戶端進行資料遷移,而 bcp 公用程式現在支援 -E旗標 (用於身分資料欄) 和 -b 旗標 (用於批次插入)。不支援某些 bcp 選項,包括 -C-T-G-K-R-V-h

使用 SQL Server Management Studio (SSMS) 遷移至 Babelfish

建議針對每個特定物件類型產生個別的檔案。您可以針對每組 DDL 陳述式使用 SSMS 中的產生指令碼精靈,然後以群組的形式修改物件,來修正評估期間找到的任何問題。

執行這些步驟,以使用 AWS DMS 或其他資料遷移方法遷移資料。首先執行這些建立指令碼類型,來取得更好、更快的方法,以在 Aurora PostgreSQL 中的 Babelfish 資料表上載入資料。

  1. 執行 CREATE SCHEMA 陳述式。

  2. 執行 CREATE TYPE 陳述式來建立使用者定義的資料類型。

  3. 執行具有主索引鍵或唯一條件約束的基本 CREATE TABLE 陳述式。

使用建議的匯入/匯出工具執行資料載入。針對下列步驟執行修改的指令碼,以新增剩餘的資料庫物件。您需要建立資料表陳述式來針對條件約束、觸發條件和索引執行這些指令碼。在指令碼產生之後,請刪除建立資料表陳述式。

  1. 針對檢查條件約束、外部索引鍵條件約束、預設條件約束執行 ALTER TABLE 陳述式。

  2. 執行 CREATE TRIGGER 陳述式。

  3. 執行 CREATE INDEX 陳述式。

  4. 執行 CREATE VIEW 陳述式。

  5. 執行 CREATE STORED PROCEDURE 陳述式。

針對每個物件類型產生指令碼

請使用下列步驟,使用 SSMS 中的產生程式碼精靈,來建立基本建立資料表陳述式。遵循相同步驟,針對不同的物件類型產生指令碼。

  1. 連線至現有的 SQL Server 執行個體。

  2. 在資料庫名稱上開啟內容選單 (按一下滑鼠右鍵)。

  3. 選擇 Tasks (任務),然後選擇 Generate Scripts... (產生指令碼...)。

  4. Choose Objects (選擇物件) 窗格中,選擇 Select specific database objects (選取特定資料庫物件)。選擇 Tables (資料表),然後選取所有資料表。選擇 Next (下一步) 繼續。

    使用 SSMS Generate Scripts (產生指令碼) 精靈來選擇物件和資料表。
  5. Set Scripting Options (設定指令碼選項) 頁面上,選擇 Advanced (進階) 以開啟 Options (選項) 設定。若要產生基本建立資料表陳述式,請變更下列預設值:

    • Script Defaults (指令碼預設值) 變更為 False。

    • Script Extended Properties (指令碼延伸屬性) 變更為 False。Babelfish 不支援延伸屬性。

    • Script Check Constraints (指令碼檢查條件約束) 變更為 False。Script Foreign Keys (指令碼外部索引鍵) 變更為 False。

    使用 SSMS 產生指令碼精靈來設定進階選項。
  6. 選擇確定

  7. Set Scripting Options (設定指令碼選項) 頁面上,選擇 Save as script file (儲存為指令碼檔案),然後選擇 Single script file (單一指令碼檔案)。輸入您的 File name (檔案名稱)。

    使用 SSMS 產生指令碼精靈來設定指令碼的預設值。
  8. 選擇 Next (下一步) 以檢視 Summary wizard (摘要精靈) 頁面。

  9. 選擇 Next (下一步) 以開始產生指令碼。

    您可以繼續為精靈中的其他物件類型產生指令碼。請選擇三次 Previous (上一步」按鈕,以回到 Choose Objects (選擇物件) 頁面,而不是在儲存檔案之後選擇 Finish (完成)。然後重複精靈中的步驟,為其他物件類型產生指令碼。