我想將資料庫從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或內部部署 Microsoft SQL Server 執行個體移轉到的 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 執行個體。
簡短說明
請使用以下任一方法遷移資料庫:
- 原生 SQL Server 備份與還原
- AWS Database Migration Service (AWS DMS)
- 交易式複寫
- 備份套件 (.bacpac) 檔案
- SQL Server 產生和發佈指令碼精靈
- SQL Server 匯入和匯出精靈
- SQL Server 大量複製程式 (bcp) 公用程式
遷移所需時間和停機時間取決於您採用的遷移方法。如需更多資訊,請參閱遷移至 Amazon RDS for SQL Server 的最佳實務。
解決方法
原生 SQL Server 備份與還原
原生備份與還原的速度比採用複寫的方法慢,但限制可能較少。
請完成以下步驟:
-
建立 Amazon Simple Storage Service (Amazon S3) 儲存貯體,用於儲存內部部署或 EC2 執行個體的備份。Amazon S3 儲存貯體與 RDS for SQL Server 執行個體必須位於相同的 AWS 區域。
-
建立可存取儲存貯體的 AWS Identity and Access Management (IAM) 角色。
-
將 SQLSERVER_BACKUP_RESTORE 選項新增至與 RDS for SQL Server 執行個體關聯的選項群組。
-
建立內部部署或 EC2 執行個體的備份,然後將備份移至 S3 儲存貯體。
-
執行以下指令碼,將備份還原至 RDS for SQL Server 執行個體:
exec msdb.dbo.rds_restore_database
@restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name file_name_and_extension';
注意: 將 database_name 替換為資料庫名稱,將 bucket_name 替換為儲存貯體名稱,並將 file_name_and_extension 替換為檔案名稱。
-
執行以下指令碼,追蹤備份狀態:
exec msdb.dbo.rds_task_status;
如果任務失敗,請檢查輸出中的 task_info 資料欄是否有錯誤訊息。請在 Amazon RDS 問題的疑難排解資料表中查詢錯誤訊息。
注意: 您可以備份及還原差異備份。您也可以還原日誌,將資料庫復原至特定時間點。
AWS DMS
請完成以下步驟:
- 若要將 SQL Server 用作 AWS DMS 的來源或目標,請完成先決條件並檢閱相關限制。
- 建立 AWS DMS 複寫執行個體。
- 使用 AWS DMS 建立來源端點和目標端點。
- 建立遷移任務。
交易式複寫
您可以設定從內部部署或 EC2 SQL Server 執行個體至 RDS for SQL Server 執行個體的交易式複寫。不過,您只能將 RDS for SQL Server 執行個體設為訂閱用戶。此外,您只能將內部部署或 EC2 SQL Server 執行個體設為使用推送訂閱的發布者或散發者。
注意: 交易式複寫依賴 EC2 主機名稱,而該名稱可能會在 RDS for SQL Server 中變更。基於這項限制,最佳實務是僅使用交易式複寫,將資料一次性遷移至 RDS for SQL Server 執行個體。
備份套件 (.bacpac) 檔案
.bacpac 檔案包含複製的中繼資料,以及壓縮至單一檔案的資料。對於小於 200 GB 的資料庫,最佳實務是使用 .bacpack 檔案。您可以使用匯出/匯入或 SQLPackage.exe (命令列) 公用程式建立 .bacpac 檔案。如需 .bacpac 檔案的詳細資訊,請參閱使用 bacpac 方法將 SQL Server 資料庫從 Azure SQL 資料庫遷移至 Amazon RDS for SQL Server。
SQL Server 產生和發佈指令碼精靈
如果資料庫小於 1 GB,您可以使用產生和發佈指令碼精靈。對於較大的資料庫,您可以使用匯入和匯出精靈或大量複製方法,編寫資料庫結構描述的指令碼。如需產生和發佈指令碼精靈的詳細資訊,請參閱 Microsoft SQL Server 文件中的操作說明: 產生指令碼 (SQL Server Management Studio)。
注意: 確認您已選取 Set Scripting Option (設定指令碼選項) 頁面上的 Save scripts to specific location (將指令碼儲存至特定位置) 和 Advanced (進階)。Advanced (進階) 設定提供其他選項,讓您在匯入和匯出期間包含或排除資料表中的物件。
SQL Server 匯入和匯出精靈
匯入和匯出精靈會建立整合套件。整合套件會將資料從內部部署或 EC2 SQL Server 執行個體複製至 RDS for SQL Server 執行個體。您可以篩選要複製至 RDS for SQL Server 執行個體的特定資料表。
執行匯入和匯出精靈前,請確認該精靈可以存取您的網路,並設定安全群組權限。請參閱 Microsoft Learn 網站上的我需要哪些權限?
如需匯入和匯出精靈的詳細資訊,請參閱 Microsoft Learn 網站上的操作說明: 執行 SQL Server 匯入和匯出精靈。
執行匯入和匯出精靈時,請為目的地 RDS for SQL Server 執行個體選擇以下選項:
- 在 Server Name (伺服器名稱),輸入 Amazon RDS 資料庫執行個體的端點名稱。
- 在 Authentication mode (驗證模式),選擇 SQL Server Authentication (SQL Server 驗證)。
- 在 Username (使用者名稱) 和 Password (密碼),輸入您在 RDS for SQL Server 執行個體中建立的主要使用者。
SQL Server bcp 公用程式
使用命令列公用程式,在 SQL Server 執行個體之間大量匯入大型資料集,或將資料匯出至檔案。您可以使用 bcp 公用程式,將大型資料集匯入 SQL Server 執行個體或匯出至檔案。
以下是 in 和 out 命令的範例:
out
執行以下 out 命令,將資料表中的記錄匯出或傾印至檔案:
bcp dbname.schema_name.table_name out C:\table_name.txt -n -S localhost -U username -P password -b 10000
上述命令包含以下選項:
- -n: 指定大量複製作業使用待複製資料的原生資料類型。
- -S: 指定 bcp 公用程式要連線的 SQL Server 執行個體。
- -U: 指定用於登入 SQL Server 執行個體的 AWS 帳戶使用者名稱。
- -P: 指定 -U 所指定使用者的密碼。
- -b: 指定每批匯入資料的資料列數。
in
執行以下 in 命令,將傾印檔案中的所有記錄匯入資料表。
bcp dbname.schema_name.table_name in C:\table_name.txt -n -S endpoint,port -U master_user_name -P master_user_password -b 10000
如需更多資訊,請參閱 Microsoft Learn 網站上的 bcp 公用程式。