如何在 RDS for SQL Server 中升級或降級 SQL Server 引擎版本?

上次更新日期:2022 年 9 月 20 日

我想升級或降級 Relational Database Service (Amazon RDS) for SQL Server 中的 SQL Server 引擎版本。該如何進行?

簡短描述

Amazon RDS for SQL Server 支援 Express、Web、Standard 和 Enterprise 版。您無法使用 RDS 主控台或使用 AWS Command Line Interface (AWS CLI) 依就地修改的方式執行 SQL Server 版本變更。

若要升級您的 SQL Server 版本,請建立快照集,然後使用較高的引擎版本還原。若要降級,請使用下列其中一種方法:

  • 使用 RDS for SQL Server 中的原生備份和還原選項。
  • 使用 AWS Database Migration Service (AWS DMS)。
  • 使用其他工具匯入及匯出 SQL Server 資料。

解決方案

升級 SQL Server 引擎版本

若要升級 SQL Server 引擎版本,請建立 RDS 快照集,然後從該快照集還原。如需升級限制,請參閱 Microsoft SQL Server 考量

若要使用快照進行升級,請依照下列步驟執行:

1.    建立原始 RDS for SQL Server 執行個體的快照

2.    還原步驟 1 中擷取的快照,以建立新的 RDS 執行個體。在還原期間將所需版本更改為更高版本。

3.    重新命名或刪除原始 RDS for SQL Server 執行個體,以釋放 DNS 端點名稱以供重複使用。如需詳細資訊,請參閱重新命名 RDS 執行個體章節。

如需從 Standard 版升級至 Enterprise 版的詳細指示和步驟,請參閱將 Amazon RDS for SQL Server 執行個體從 Standard 版修改為 Enterprise 版

您可以對這些升級使用相同的快照和還原方法:

  • Standard 版至 Enterprise 版
  • Web 版至 Standard 版或 Enterprise 版
  • Express 版至 Web 版、Standard 版或 Enterprise 版

重要注意事項:升級版本時的快照還原會建立新的 RDS for SQL Server 執行個體。新執行個體的 RDS 端點與快照來源執行個體不同。

降級 SQL Sever 版本

由於 SQL Server 作為產品的限制,因此不支援將 RDS for SQL Server 執行個體從較高版本降級到較低版本。不過,您可以依照稍後提到的因應措施選項,以下列任何一種組合降級 RDS for SQL Server 版本:

  • Enterprise 版至 Standard、Web 或 Express 版
  • Standard 版至 Web 或 Express 版
  • Web 版至 Express 版

若要降級 RDS for SQL Server 版本,請使用下列其中一個選項:

選項 1:使用 RDS for SQL Server 中的原生備份和還原選項

注意:您也可以使用此選項,將資料庫從較低版本的 RDS 執行個體移至較高版本。

原生備份和還原會在現有的來源 RDS for SQL Server 執行個體上建立資料庫的完整備份。將備份存放在 Amazon Simple Storage Service (Amazon S3) 上,然後將備份檔案還原到新的目標 RDS 執行個體。

若要從來源 Enterprise 執行個體降級至目標 Standard 執行個體,請依照下列步驟執行:

1.    使用 Standard 版 SQL Sever 建立新的 RDS for SQL Server。這是新的目標執行個體。

2.    在來源 Enterprise 和目標 Standard 版執行個體上新增原生備份和還原選項

3.    將來源 (Enterprise) 執行個體上的每個使用者資料庫備份至 S3 儲存貯體。

4.    在來源執行個體上的每個資料庫上執行 sys.dm_dm_persisted_sku-features (Transact-SQL) 查詢。此查詢會檢查目前是否有任何繫結至較高版本的功能正在使用中。當您將資料庫還原至較低版本的目標執行個體時,繫結至較高版本的功能可能無法運作。

USE [database-name]
    GO
    SELECT feature_name FROM sys.dm_db_persisted_sku_features;
    GO

5.    將備份從 S3 儲存貯體還原到目標 (Standard) RDS 執行個體。

6.    請務必在目標 RDS 執行個體資料庫上建立必要的登入資訊和使用者。同時建立適當的安全群組,並連接適當的參數選項群組。這些與來源 RDS 執行個體相同。

注意:您可以使用上述步驟,跨 RDS 上任何版本的 SQL Server 匯出和匯入資料庫。

選項 2:使用 AWS DMS

注意:您也可以使用此選項,將資料庫從較低版本的 RDS 執行個體移至較高版本。

使用 AWS DMS 遷移您的資料庫。AWS DMS 也會將持續的變更從較高版執行個體 (來源端點) 複寫至較低版執行個體 (目標端點)。

AWS DMS 允許單向複寫、大量載入資料表以及擷取資料變更 (如果來源和目標 RDS for SQL Server 執行個體版本支援)。

如需詳細資訊,請參閱下列主題:

選項 3:使用其他工具匯入和匯出 SQL Server 資料

您可以使用下列其他工具來匯入和匯出資料庫:

  • SQL Server 匯入和匯出精靈
  • 產生和發佈指令碼精靈
  • 大量複製 (bcp 公用程式)

使用這些工具之前,必須先建立較低 SQL Server 版本的執行個體,且執行個體處於作用中狀態。

請記住,與原生備份和還原或 AWS DMS 相比,這些工具需要更多的工作量。您可能會遇到多個必須修正的資料一致性或完整性錯誤。使用這些工具移動資料時,就會發生這些錯誤。在決定使用其中一種工具之前,請在測試環境中完整測試該過程。

  • SQL Server 匯入和匯出精靈:將來源執行個體之資料庫和物件的結構描述複製並建立至目標執行個體。然後,使用此精靈將一個或多個資料表、檢視或查詢從一個 RDS for SQL Server 資料庫執行個體複製到另一個資料存放區。如需詳細資訊,請參閱 SQL Server 匯入和匯出精靈
  • SQL Server 產生和發佈指令碼精靈和 bcp 公用程式:使用「SQL Server 產生和發佈指令碼精靈」為整個資料庫或選取的物件建立指令碼。您可以在目標 SQL Server 資料庫執行個體上執行這些指令碼,以重新建立具有指令碼的物件。然後,使用 bcp 公用程式將所選物件的資料大量匯出至目標資料庫執行個體。從具有來源和目標 RDS 執行個體連線的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體執行 bcp 公用程式。如需詳細資訊,請參閱 SQL Server 產生和發佈指令碼精靈和 bcp 公用程式

注意:本節中提到的所有選項也可以用來將資料庫從較低版本遷移至較高版本的 RDS for SQL Server 執行個體。不過,升級 SQL Server 版本章節中所說明的方法會比較容易。決定使用哪個選項取決於如停機時間、工作量、涉及的複雜性等因素。

重新命名 RDS 執行個體

描述為升級或降級 RDS for SQL Server 版本的選項一律會導致建立新的目標 RDS 執行個體。新的 RDS 執行個體具有與現有來源 RDS 執行個體不同的 RDS DNS 端點。

有時候,跨應用程式和其他服務更新新的 RDS 端點會遺漏一或多個這些元件中的連接字串更新。發生這種情況時,您可能會在 RDS for SQL Server 執行個體的版本變更之後遇到問題。

若要避免這種情況,請考慮重新命名來源和目標 RDS 執行個體。重新命名可確保目標版本執行個體具有與原始來源版本執行個體相同的 RDS DNS 端點。

這樣做可避免在 RDS for SQL Server 執行個體變更版本後,變更相依應用程式或服務的連接字串。

若要在變更版本後重新命名來源和目標 RDS 執行個體,請依照下列步驟執行:

此範例假設來源 RDS 執行個體是 Enterprise 版本 rds-original。目標執行個體是 Standard 版 rds-new

1.    停止所有傳入流量 (停止應用程序) 到來源執行個體 rds-original

2.    請遵循上述任何步驟或選項來升級或降級 RDS 執行個體上的 SQL Server 版本。版本成功變更之後,會有兩個執行個體:來源執行個體是 rds-original,目標執行個體是 rds-new

3.    修改來源執行個體,以將資料庫識別碼 rds-original 重新命名為不同的名稱,例如 rds-original-old

4.    執行個體 rds-original-oldAvailable (可用) 狀態後,請將目標執行個體資料庫識別碼從 rds-new 重新命名為原始執行個體的名稱 rds-original

5.    確認執行個體已重新命名為 rds-original-oldrds-original,且處於 Available (可用) 狀態。

6.    確保將連接到新版本目標 RDS 執行個體的相關 RDS 安全群組保持與來源執行個體相同。這樣可以確保來自現有應用程式的網路連線能力保持不變。

7.    現在允許傳入流量 (啟動應用程式) 到具有所需 SQL Server 版本的執行個體 rds-original。由於 RDS 與來源執行個體具有相同的 DNS 端點,因此不需要變更應用程式連接字串。

8.    執行應用程式測試,確定 RDS 執行個體版本變更後沒有任何影響。

9.    如果一切正常,請建立執行個體 rds-original-old 的最終快照,然後刪除此執行個體以節省成本。

注意:最好先在較低的環境中測試活動,然後再在生產環境中實作。這可讓您預估變更需要多少時間。此外,您可以識別活動期間發生的任何問題,以協助讓生產環境中的實作更順暢。