本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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 資料庫叢集做為目標端點。
-
建立一個 Babelfish 開啟的新 Aurora PostgreSQL 資料庫叢集。如要瞭解如何作業,請參閱建立 Babelfish for Aurora PostgreSQL DB 叢集。
若要匯入從 SQL Server 資料庫匯出的各種 SQL 成品,請使用 SQL Server 工具 (例如 sqlcmd
) 來連線至 Babelfish 叢集。如需詳細資訊,請參閱使用 SQL Server 用戶端來連線至資料庫叢集。 -
在您要遷移的 SQL Server 資料庫上,匯出資料定義語言 (DDL)。DDL 是描述資料庫物件的 SQL 程式碼,這些物件包含使用者資料 (例如資料表、索引和檢視表) 和使用者撰寫的資料庫程式碼 (例如預存程序、使用者定義函數和觸發程序)。
如需詳細資訊,請參閱使用 SQL Server Management Studio (SSMS) 遷移至 Babelfish。
-
執行評估工具來評估您可能需要進行任何變更的範圍,讓 Babelfish 能夠有效地支援在 SQL Server 上執行的應用程式。如需詳細資訊,請參閱評估和處理 SQL Server 與 Babelfish 之間的差異。
-
檢閱 AWS DMS 目標端點限制,並視需要更新 DDL 指令碼。如需詳細資訊,請參閱使用 Babelfish for Aurora PostgreSQL 做為目標中的將 PostgreSQL 目標端點與 Babelfish 資料表搭配使用的限制。 PostgreSQL
-
在新的 Babelfish 資料庫叢集上,於您指定的 T-SQL 內執行 DDL,以僅建立結構描述、使用者定義的資料類型,以及具有主索引鍵條件約束的資料表。
-
使用 AWS DMS 將資料從 SQL Server 遷移至 Babelfish 資料表。對於使用 SQL Server 變更資料擷取或 SQL 複寫的連續複寫,請使用 Aurora PostgreSQL 而不是 Babelfish 作為端點。若要這樣做,請參閱使用 Babelfish for Aurora PostgreSQL 作為 AWS Database Migration Service的目標。
-
資料載入完成時,建立所有支援 Babelfish 叢集上應用程式的剩餘 T-SQL 物件。
-
將用戶端應用程式重新設定成連線至 Babelfish 端點,而不是 SQL Server 資料庫。如需詳細資訊,請參閱連線至 Babelfish 資料庫叢集。
-
視需要修改應用程式並重新測試。如需詳細資訊,請參閱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 檔案。我們建議採取下列步驟來簡化評估。
-
在 Choose Objects (選擇物件) 頁面上,選擇 Script entire database and all database objects (編寫整個資料庫和所有資料庫物件的指令碼)。
-
針對 Set Scripting Options (設定指令碼選項),選擇 Save as script file (儲存為指令碼檔案) 作為 Single script file (單一指令碼檔案)。
-
選擇 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
-
-
執行精靈中的其餘步驟來產生檔案。
用於從 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 資料表上載入資料。
-
執行
CREATE SCHEMA
陳述式。 -
執行
CREATE TYPE
陳述式來建立使用者定義的資料類型。 -
執行具有主索引鍵或唯一條件約束的基本
CREATE TABLE
陳述式。
使用建議的匯入/匯出工具執行資料載入。針對下列步驟執行修改的指令碼,以新增剩餘的資料庫物件。您需要建立資料表陳述式來針對條件約束、觸發條件和索引執行這些指令碼。在指令碼產生之後,請刪除建立資料表陳述式。
-
針對檢查條件約束、外部索引鍵條件約束、預設條件約束執行
ALTER TABLE
陳述式。 -
執行
CREATE TRIGGER
陳述式。 -
執行
CREATE INDEX
陳述式。 -
執行
CREATE VIEW
陳述式。 -
執行
CREATE STORED PROCEDURE
陳述式。
針對每個物件類型產生指令碼
請使用下列步驟,使用 SSMS 中的產生程式碼精靈,來建立基本建立資料表陳述式。遵循相同步驟,針對不同的物件類型產生指令碼。
-
連線至現有的 SQL Server 執行個體。
-
在資料庫名稱上開啟內容選單 (按一下滑鼠右鍵)。
-
選擇 Tasks (任務),然後選擇 Generate Scripts... (產生指令碼...)。
-
在 Choose Objects (選擇物件) 窗格中,選擇 Select specific database objects (選取特定資料庫物件)。選擇 Tables (資料表),然後選取所有資料表。選擇 Next (下一步) 繼續。
-
在 Set Scripting Options (設定指令碼選項) 頁面上,選擇 Advanced (進階) 以開啟 Options (選項) 設定。若要產生基本建立資料表陳述式,請變更下列預設值:
-
Script Defaults (指令碼預設值) 變更為 False。
-
Script Extended Properties (指令碼延伸屬性) 變更為 False。Babelfish 不支援延伸屬性。
-
Script Check Constraints (指令碼檢查條件約束) 變更為 False。Script Foreign Keys (指令碼外部索引鍵) 變更為 False。
-
-
選擇確定。
-
在 Set Scripting Options (設定指令碼選項) 頁面上,選擇 Save as script file (儲存為指令碼檔案),然後選擇 Single script file (單一指令碼檔案)。輸入您的 File name (檔案名稱)。
-
選擇 Next (下一步) 以檢視 Summary wizard (摘要精靈) 頁面。
-
選擇 Next (下一步) 以開始產生指令碼。
您可以繼續為精靈中的其他物件類型產生指令碼。請選擇三次 Previous (上一步」按鈕,以回到 Choose Objects (選擇物件) 頁面,而不是在儲存檔案之後選擇 Finish (完成)。然後重複精靈中的步驟,為其他物件類型產生指令碼。