

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

# SQL Server 的異質資料庫遷移
<a name="heterogeneous-migration"></a>

由於開放原始碼資料庫和雲端運算平台的創新和改進 AWS，許多組織正在從 SQL Server 等專屬 （線上交易處理或 OLTP) 資料庫引擎遷移至開放原始碼引擎。SQL Server 資料庫是任何組織的任務關鍵系統，但鎖定在特定廠商是風險高昂且成本高昂的情況。低營運成本且無授權費用是考慮將基礎資料庫技術切換到開放原始碼或 AWS 雲端原生資料庫的有力原因。

遷移 SQL Server 的其他原因是廠商鎖定期間、授權稽核、昂貴的授權和成本。因此，許多組織選擇在遷移至 時，將其 SQL Server 資料庫遷移至開放原始碼資料庫 （例如 PostgreSQL、MySQL 或 MariaDB) 或 AWS 雲端原生資料庫 （例如 Amazon Aurora 或 Amazon DynamoDB) AWS。

您也可以將 SQL Server 資料倉儲資料庫遷移至 Amazon Redshift，這是快速、全受管的雲端資料倉儲。Amazon Redshift 與您的資料湖整合，提供比任何其他資料倉儲快三倍的效能，成本比任何其他雲端資料倉儲低 75%。如需詳細資訊，請參閱 AWS 規範指引網站上的使用 [將內部部署 Microsoft SQL Server 資料庫遷移至 Amazon Redshift AWS DMS](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-microsoft-sql-server-database-to-amazon-redshift-using-aws-dms.html) 模式。

若要遷移至開放原始碼或 AWS 雲端原生資料庫，請根據您擁有的資料類型、存取模型、可擴展性、應用程式實用性和複雜性，選擇正確的資料庫。從 SQL Server 遷移到 PostgreSQL 和其他開放原始碼資料庫通常既困難又耗時，而且需要仔細評估、規劃和測試。

如 AWS Database Migration Service (AWS DMS) 和 AWS Schema Conversion Tool (AWS SCT) 等服務可協助您將商業資料庫遷移至 上的開放原始碼資料庫， AWS 將停機時間降到最低，讓此程序變得更容易。

在異質資料庫遷移中，來源和目標資料庫引擎不同，如同 SQL Server 到 Aurora 或 SQL Server 到 MariaDB 遷移一樣。來源和目標資料庫中的結構描述結構、資料類型和資料庫程式碼可能非常不同，因此必須在資料遷移開始之前轉換結構描述和程式碼。因此，異質遷移是一個兩步驟的程序：
+ 步驟 1. 轉換來源結構描述和程式碼以符合目標資料庫的結構描述和程式碼。您可以使用 AWS SCT 進行此轉換。
+ 步驟 2. 將資料從來源資料庫遷移至目標資料庫。您可以 AWS DMS 針對此程序使用 。

 ![\[Heterogeneous database migration with AWS SCT and AWS DMS\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/migration-sql-server/images/migration-tools.png) 

AWS DMS 會在遷移期間自動處理主要資料類型轉換。來源資料庫可以位於外部您自己的內部部署中 AWS，可以是在 EC2 執行個體上執行的資料庫，也可以是 Amazon RDS 資料庫 （請參閱 文件中的 AWS DMS [資料遷移來源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html))。目標可以是 Amazon EC2、Amazon RDS 或 Aurora 中的資料庫。如需有關使用 MySQL 做為目標資料庫的資訊，請參閱 AWS 資料庫部落格上的[將 SQL Server 資料庫遷移至 MySQL 相容資料庫引擎](https://aws.amazon.com/blogs/database/migrating-a-sql-server-database-to-a-mysql-compatible-database-engine/)。

# 異質資料庫遷移的工具
<a name="heterogeneous-migration-tools"></a>

下表提供可用來從 SQL Server 遷移至另一個資料庫引擎的工具清單。


****  

| 遷移工具 | 目標資料庫支援 | 用於 | 
| --- | --- | --- | 
| [AWS SCT](#aws-sct) |  Amazon RDS for MySQL Amazon RDS for PostgreSQL Amazon Aurora MySQL Amazon Aurora PostgreSQL  | 結構描述轉換 | 
| [AWS DMS](#aws-dms) |  Amazon RDS for MySQL Amazon RDS for PostgreSQL Amazon Aurora MySQL Amazon Aurora PostgreSQL  | 資料遷移 | 
| [Babelfish](#babelfish) |  Amazon Aurora PostgreSQL  | 資料存取和遷移 | 

以下小節提供有關每個工具的詳細資訊。

## AWS SCT
<a name="aws-sct"></a>

[AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) 會將您現有的商業資料庫結構描述轉換為開放原始碼引擎或 AWS 雲端原生資料庫。 會自動將來源資料庫結構描述和大部分資料庫程式碼物件，包括檢視、預存程序和函數，轉換為與目標資料庫相容的格式，藉此 AWS SCT 進行可預測的異質資料庫遷移。

當您將資料庫結構描述從一個引擎轉換為另一個引擎時，您也需要更新應用程式中的 SQL 程式碼，以與新的資料庫引擎互動，而不是與舊的資料庫引擎互動。 AWS SCT 也會將 SQL 程式碼轉換為 C\$1\$1、C\$1、Java 或其他應用程式程式碼。任何無法自動轉換的物件都會清楚標示為手動轉換。 AWS SCT 也可以掃描應用程式原始碼以取得內嵌 SQL 陳述式，並將其轉換為資料庫結構描述轉換專案的一部分。如需詳細資訊，請參閱 AWS 文件中的[使用 Microsoft SQL Server 做為 的來源 AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Source.SQLServer.html)。

## AWS DMS
<a name="aws-dms"></a>

[AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/) 會快速且安全地將資料遷移至 AWS。在遷移期間，來源資料庫會保持完全運作，將應用程式停機時間降到最低。 AWS DMS 支援同質遷移，例如將資料從一個 SQL Server 資料庫遷移到另一個資料庫。它也支援在不同資料庫平台之間進行異質遷移，例如將 SQL Server 資料庫遷移至開放原始碼資料庫或 AWS 雲端原生資料庫。 會 AWS DMS 管理遷移程序的複雜性，包括自動將來源資料庫中發生的資料變更複寫至目標資料庫。資料庫遷移完成後，只要您選擇，目標資料庫就會與來源資料庫保持同步，而且您可以在方便的時間切換到目標資料庫。如需詳細資訊，請參閱 AWS 文件中的[使用 Microsoft SQL Server 資料庫做為 的來源 AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.SQLServer.html)。

## Babelfish
<a name="babelfish"></a>

Babelfish 是 Amazon Aurora 的內建功能。Babelfish for Aurora PostgreSQL 可讓您的 Aurora PostgreSQL 相容版本資料庫了解針對 Microsoft SQL Server 撰寫之應用程式的命令。修改 SQL Server 資料庫程式碼以 Transact-SQL (T-SQL) 撰寫的 SQL Server 應用程式，SQL Server 的專屬 SQL 方言需要精力且耗時。[Babelfish for Aurora PostgreSQL](https://aws.amazon.com/rds/aurora/babelfish/) 可讓此程序更簡單。使用 Babelfish，您不需要變更應用程式程式碼。反之，您可以使用 Babelfish for Aurora PostgreSQL 將 SQL Server 資料庫遷移至 Aurora PostgreSQL 相容資料庫叢集。

使用 Babelfish，Aurora PostgreSQL 了解 T-SQL 並支援相同的通訊協定，因此您不需要切換資料庫驅動程式或重寫應用程式查詢。最初為 SQL Server 編寫的應用程式現在可以使用較少程式碼變更的 Aurora。這可減少修改和移動在 SQL Server 或更新版本上執行的應用程式到 Aurora 所需的工作量，進而實現更快、更低風險且更具成本效益的遷移。

如果您要從舊版 SQL Server 資料庫遷移，您可以使用 Babelfish 搭配您使用原生 PostgreSQL APIs 建置的新功能並行執行 SQL Server 程式碼。Babelfish 可讓 Aurora PostgreSQL 使用常用的 SQL Server 工具、命令和驅動程式。

Babelfish 也會使用原生 PostgreSQL 連線提供對資料的存取。依預設，Babelfish 支援的兩種 SQL 方言都可以透過其在下列連接埠的原生接線通訊協定取得：
+ 針對 SQL Server 方言 (T-SQL)，請連線至連接埠 1433。
+ 對於 PostgreSQL 方言 (PL/pgSQL)，請連線至連接埠 5432。

Babelfish 可讓您的舊版 SQL Server 應用程式透過從 SQL Server 或 PostgreSQL 連接埠提供連線，與 Aurora 通訊，無需大量的程式碼重寫。下圖說明此架構。

![\[Babelfish 和 Aurora 之間的通訊\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/migration-sql-server/images/babelfish.png)


您可以從 Amazon RDS 管理主控台在 Aurora 叢集上啟用 Babelfish。如需說明，請參閱《Amazon RDS 文件》中的[為 Aurora PostgreSQL 資料庫叢集建立 Babelfish](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-create.html)。

如需遷移的詳細資訊，請參閱 [Aurora 文件中的將 SQL Server 資料庫遷移至 Babelfish for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-migration.html)。

如需詳細資訊，請參閱下列資源：
+ [Babelfish for Aurora PostgreSQL 入門](https://aws.amazon.com/blogs/database/get-started-with-babelfish-for-aurora-postgresql/) (AWS 資料庫部落格）
+ [使用 Babelfish 從 SQL Server 遷移至 Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-from-sql-server-to-amazon-aurora-using-babelfish/) (AWS 資料庫部落格）
+ [使用 SSIS 和 Babelfish 從 SQL Server 遷移至 Aurora PostgreSQL ](https://aws.amazon.com/blogs/database/migrate-from-sql-server-to-aurora-postgresql-using-ssis-and-babelfish/) (AWS 資料庫部落格）
+ 將 [SSIS 套件從 SQL Server 修改為 Babelfish for Aurora PostgreSQL](https://aws.amazon.com/blogs/database/modify-ssis-packages-from-sql-server-to-babelfish-for-aurora-postgresql/) (AWS 資料庫部落格）
+ [針對 Babelfish for Aurora PostgreSQL 執行 SQL Server Reporting Services 報告](https://aws.amazon.com/blogs/database/run-sql-server-reporting-services-reports-against-babelfish-for-aurora-postgresql/) (AWS 資料庫部落格）
+ [使用 AWS SCT 評估報告準備 Babelfish 遷移 ](https://aws.amazon.com/blogs/database/prepare-for-babelfish-migration-with-the-aws-sct-assessment-report/)(AWS 資料庫部落格）