全部產品
Search
文件中心

ApsaraDB RDS:使用SSMS遷移資料至RDS SQL Server

更新時間:Jun 24, 2025

本文以Azure SQL Database為例,介紹如何使用SQL Server Management Studio(SSMS)將其他雲平台上的SQL Server資料庫或本地自建的SQL Server資料庫遷移到阿里雲RDS SQL Server。

前提條件

  • 已建立儲存空間大於源庫的目標RDS SQL Server執行個體,且執行個體需滿足如下條件:

    說明

    建議目標執行個體儲存空間為源庫的1.2倍,已有RDS SQL Server執行個體但儲存空間不足時,請及時擴容

    • 執行個體系列:基礎系列、高可用系列(2012及以上版本)、叢集系列

    • 執行個體規格:通用型、獨享型(不支援共用型

    • 計費方式:訂用帳戶或隨用隨付(不支援Serverless執行個體

    • 網路類型:專用網路。如需變更網路類型,請參見更改網路類型

    • 執行個體建立時間:

      • 高可用系列和叢集系列執行個體的建立時間需在2021年01月01日或之後。

      • 基礎系列執行個體的建立時間需在2022年09月02日或之後。

      說明

      建立時間可在基本資料頁內的運行狀態中查看。

  • 已在本地或ECS執行個體(專用網路、Windows Server鏡像、分配公網IP)中安裝SSMS工具

    說明

    本樣本以SSMS 19.1為例,為您介紹遷移上雲的操作步驟。實際操作步驟可能會因SSMS工具的安裝位置、版本、設定等因素而有所差異,請以實際情況為準。

注意事項

  • 為了避免發生資料不一致的情況,您需要停止源庫的資料寫入,停止時間取決於待遷移的資料量和實際操作時間。

  • 資料匯出的速度主要取決於源庫的規格。

準備工作

  • 開啟Azure SQL Database的公網存取權限,並在防火牆中允許您本地IP或ECS執行個體的公網IP訪問Azure服務和資源。

    說明

    具體操作,請查看Azure官方的相關文檔,或聯絡Azure的技術支援人員。

  • 確認源庫中的約束、視圖等不會導致資料匯出失敗。

  • 登入阿里雲主帳號,在RDS SQL Server執行個體中建立超級許可權帳號

  • 在源和目標庫中分別執行SELECT name, compatibility_level FROM sys.databases; 命令,確認目標庫是否相容源庫

  • 為RDS SQL Server執行個體設定白名單,允許用戶端所在的ECS或本地裝置訪問執行個體。

    說明
    • ECS通過內網訪問RDS SQL Server時,需確保ECS和RDS SQL Server執行個體位於同一地區的同一VPC下,並將ECS的私網IP添加到RDS SQL Server執行個體白名單中。

    • 本地裝置訪問RDS SQL Server時,需將本地裝置的公網IP添加到RDS SQL Server執行個體白名單中。

1. 匯出Azure SQL Database資料

暫停在Azure SQL Database寫入資料,並匯出Azure SQL Database中的資料。

  1. 使用SSMS工具串連Azure SQL Database

  2. 進入匯出資料的介面。

    1. 物件總管中,展開資料庫

    2. 按右鍵目標庫。

    3. 選擇任務 > 匯出資料層應用程式

    說明

    匯出資料操作的更多資訊,請參見匯出資料層應用程式

  3. 單擊下一步

  4. 選擇需要匯出的對象。

    1. 匯出設定設定頁簽中,選擇儲存到本地磁碟

    2. 單擊瀏覽,選擇儲存路徑和檔案名稱。

    3. 進階頁簽中,選擇需要匯出的表。

      說明

      若您需要選擇其他對象(如觸發器和預存程序),請在物件總管中按右鍵目標庫,然後選擇任務 > 產生指令碼,並根據實際情況,完成後續步驟。

    4. 單擊下一步

  5. 單擊完成

  6. 資料匯出成功後,單擊關閉

2. 匯入資料到RDS SQL Server

將匯出的資料匯入到RDS SQL Server中。

  1. 使用SSMS工具串連RDS SQL Server

    1. 開啟SSMS工具。

    2. 串連到伺服器對話方塊,配置如下資訊。

      配置項

      說明

      伺服器類型

      選擇為資料庫引擎

      伺服器名稱

      填入RDS SQL Server執行個體的內網地址外網地址。擷取方法,請參見查看或修改串連地址和連接埠

      身分識別驗證

      選擇為SQL Server 身分識別驗證

      登入名稱

      填入超級許可權帳號。

      密碼

      填入超級許可權帳號的密碼。

    3. 單擊串連

  2. 物件總管中,按右鍵資料庫

  3. 選擇匯入資料層應用程式

  4. 單擊下一步

  5. 配置匯入設定

    1. 選擇從本地磁碟匯入

    2. 單擊瀏覽,選擇從Azure SQL Database中匯出的.bacpac檔案。

    3. 單擊下一步

  6. 配置資料庫設定

    1. 新資料庫名稱中,填入源庫在RDS SQL Server執行個體中對應的資料庫名稱。

      重要
      • 建議與Azure SQL Database中的資料庫名稱一致,否則在業務切換至RDS SQL Server後,可能會導致業務涉及的功能異常。

      • 若您填入的資料庫名稱在RDS SQL Server執行個體中已存,可能會導致匯入失敗或資料不一致。

    2. SQL Server設定地區中,將資料檔案路徑記錄檔路徑修改為E:\SQLDATA\DATA

    3. 單擊下一步

  7. 單擊完成

  8. 資料匯入成功後,單擊關閉

3. 校正資料一致性

資料匯入完成後,需要分別在源庫和目標庫執行如下命令進行校正,源庫和目標庫返回的結果相同則表示資料一致。

  • 查詢資料庫的資料行數(返回所有業務表資料的總和)

    重要

    請確保資料移轉過程中,源表和快照資料無變更,否則可能會導致資料行數不一致。

    USE <資料庫名稱>;
    
    SELECT SUM(b.rows) AS 'RowCount' 
    FROM sysobjects AS a INNER JOIN
    sysindexes AS b ON a.id = b.id
    WHERE (a.type = 'u') AND (b.indid IN (0, 1))
  • 查詢資料大小(返回資料檔案大小和空間佔比率)

    USE <資料庫名稱>;
    
    SELECT a.name [檔案名稱]
      ,cast(a.[size]*1.0/128 as decimal(12,1)) AS [檔案設定大小(MB)]
      ,CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [檔案所佔空間(MB)]
      ,CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0  AS DECIMAL(12,1)) AS [所佔空間率%]
      ,CASE WHEN A.growth =0 THEN '檔案大小固定,不會增長' ELSE '檔案將自動成長' end [增長模式]
      ,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN '增量為固定大小'
        WHEN A.growth > 0 AND is_percent_growth = 1 THEN '增量將用整數百分比表示'
        ELSE '檔案大小固定,不會增長' END AS [增量模式]
      ,CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB'
        WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%'
        ELSE '檔案大小固定,不會增長' end AS [增長值(%或MB)]
      ,a.physical_name AS [檔案所在目錄]
      ,a.type_desc AS [檔案類型]
    FROM sys.database_files  a 
    INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid 
    LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id] 
    ORDER BY a.[type]

資料一致性校正完成後,您可以將業務切換至RDS SQL Server,並測試業務涉及的功能是否正常。