全部產品
Search
文件中心

Data Transmission Service:遷移時源庫為SQL Server的注意事項及限制

更新時間:Dec 02, 2025

如果遷移的來源資料庫類型為SQL Server,如自建SQL Server、RDS SQL Server,您需要在配置具體的遷移任務前,參考本文的注意事項及限制,以保障資料移轉任務的正常運行。

源庫為SQL Server的遷移方案概覽

根據如下遷移方案,查看遷移任務的注意事項及限制:

SQL Server間遷移

類型

說明

源庫限制

  • 頻寬要求:源庫所屬的伺服器需具備足夠出口頻寬,否則將影響資料移轉速率。

  • 待遷移的表需具備主鍵或唯一約束,且欄位具有唯一性,否則可能會導致目標資料庫中出現重複資料。

  • 如遷移對象為表層級,且需進行編輯(如表列名映射),則單次遷移任務僅支援遷移至多1000張表。當超出數量限制,任務提交後會顯示請求報錯,此時建議您拆分待遷移的表,分批配置多個任務,或者配置整庫的遷移任務。

  • 單次遷移任務僅支援遷移至多10個資料庫。當超出數量限制,會出現穩定性和效能問題的風險,此時建議您拆分待遷移的表,分批配置任務。

  • 若需要配置非整庫的遷移任務,則該任務中遷移至同一個目標庫的遷移對象,不支援配置Schema名稱不同而表名稱相同的對象。

  • 如需進行增量遷移,資料日誌:

    • 需開啟,備份模式設定為Full,且已成功執行過全量物理備份。

    • 如為增量遷移任務,DTS要求來源資料庫的資料日誌儲存24小時以上,如為全量遷移和增量遷移任務,DTS要求來源資料庫的資料日誌至少保留7天以上(您可在全量遷移完成後將資料日誌儲存時間設定為24小時以上),否則DTS可能因無法擷取資料日誌而導致任務失敗,極端情況下甚至可能會導致資料不一致或丟失。由於您所設定的資料日誌儲存時間低於DTS要求的時間進而導致的問題,不在DTS的SLA保障範圍內。

  • 若源庫待遷移的表需要開啟CDC,則需滿足以下條件,否則預檢查將會失敗。

    • sys.sysservers視圖的srvname欄位與SERVERPROPERTY函數傳回值保持一致。

    • 若源庫是自建SQL Server,則資料庫擁有者需是sa;若源庫是RDS SQL Server,則資料庫擁有者需是sqlsa。

    • 若源庫是企業版,則需為2008及以上版本。

    • 若源庫是標準版,則需為2016SP1及以上版本。

    • 若源庫為SQL Server 2017版(包括標準版和企業版),建議升級版本。

  • DTS使用fn_log函數擷取源庫日誌,而該函數有一定的效能瓶頸,請不要過早清理源庫日誌,否則可能會導致DTS任務失敗。

  • 源庫的操作限制:

    • 在庫表結構遷移和全量遷移階段,請勿執行庫或表結構變更的DDL操作,否則資料移轉任務會失敗。

    • 如僅執行全量資料移轉,請勿向源執行個體中寫入新的資料,否則會導致源和目標資料不一致。為即時保持資料一致性,建議選擇結構遷移、全量資料移轉和增量資料移轉。

  • 若源庫為唯讀執行個體,則不支援遷移DDL操作。

  • 若源庫為Azure SQL Database,則一個遷移執行個體僅支援遷移一個資料庫。

  • 若源庫為RDS SQL Server,且遷移執行個體包含增量遷移任務,為保障遷移執行個體穩定運行,請確保已關閉透明資料加密TDE(Transparent Data Encryption)功能。更多資訊,請參見關閉TDE

  • 若在庫表結構遷移任務運行前,源庫使用sp_rename命令修改了預存程序等對象的名稱,則可能會導致庫表結構遷移任務不符合預期或運行失敗。

    說明

    建議使用ALTER命令修改資料庫中對象的名稱。

  • 在混合式日誌解析模式下,源庫不支援連續執行(時間間隔小於10分鐘)多個加減列操作。例如,連續執行如下SQL會導致任務報錯。

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

  • 建議在全量資料移轉任務運行期間,確保源庫的交易處理模式參數READ_COMMITTED_SNAPSHOT為啟用狀態,以避免因共用鎖定(Shared Lock)對資料寫入產生影響。否則,可能會導致資料不一致、執行個體運行失敗等異常情況。由此引發的異常情況,不在DTS的SLA保障範圍內。

其他限制

  • 不支援遷移CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY和GEOGRAPHY類型的資料。

  • 若目標端TIMESTAMP類型的欄位無法寫入資料,則DTS不支援全量遷移和增量遷移,從而可能會導致資料不一致或任務失敗。

  • 若需遷移源庫的觸發器,則須確保任務所使用的目標庫資料庫帳號具備目標庫的所有者(Owner)許可權。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為解析源庫日誌做增量同步處理(不支援堆表),則待遷移的表需具備叢集索引,且叢集索引中需包含主鍵列;待遷移的表不支援堆表、無主鍵表、壓縮表、含計算資料行的表、含稀疏列的表。在混合式日誌解析模式下,沒有如上限制。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為非堆表用日誌解析增量同步處理,堆表用CDC增量同步處理(混合式日誌解析),則還有如下限制:

    • DTS的增量遷移依賴CDC組件,因此請確保源庫CDC作業正常運行,否則會導致DTS任務失敗。

    • CDC組件儲存的增量資料預設保留3天,建議您使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;命令對儲存時間進行合理調整。

      說明
      • <time>表示時間,單位為分鐘。

      • 若源庫單表的日均增量變更SQL超過一千萬條,建議將<time>取值為1440。

    • 單次遷移任務中,開啟CDC的表數量不建議超過1000,否則可能會導致任務延遲或不穩定。

    • DTS增量遷移任務的前置模組將會開啟源庫的CDC。在此過程中,由於SQL Server資料庫核心自身的限制,源庫將會出現短暫的鎖表現象。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為輪詢查詢CDC執行個體做增量同步處理,則還有如下限制:

    • DTS執行個體使用的源庫帳號需具備開啟CDC的許可權。開啟庫層級CDC需要使用sysadmin角色許可權的帳號,開啟表層級CDC需要高許可權帳號。

      說明
      • Azure SQL Database控制台提供的最高許可權帳號(伺服器管理員)滿足要求。其中基於vCore購買模型的資料庫,所有規格均支援開啟CDC;基於DTU購買模型的資料庫,規格需要為S3及以上才支援開啟CDC。

      • Amazon RDS for SQL Server的高許可權帳號滿足要求,支援為預存程序開啟庫層級的CDC。

      • 聚集資料行存放區索引表不支援開啟CDC。

      • DTS增量遷移任務的前置模組將會開啟源庫的CDC。在此過程中,由於SQL Server資料庫核心自身的限制,源庫將會出現短暫的鎖表現象。

    • DTS是通過輪詢方式去源庫查詢每張表的CDC執行個體(CDC Instance)以擷取增量資料,因此源庫待遷移表的數量不建議超過1000,否則可能會導致任務延遲或不穩定。

    • CDC組件儲存的增量資料預設保留3天,建議您使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;命令對儲存時間進行合理調整。

      說明
      • <time>表示時間,單位為分鐘。

      • 若源庫單表的日均增量變更SQL超過一千萬條,建議將<time>取值為1440。

    • 不支援連續執行加減列操作(一分鐘內執行超過兩次加列或減列的DDL),否則可能會導致任務失敗。

    • 不支援對源庫CDC執行個體(CDC Instance)做變更操作,否則可能會導致任務失敗或資料丟失。

  • 若需跨版本遷移,請提前確認相容性。

  • 為保障增量資料移轉延遲的準確性,解析源端日誌做增量同步處理模式,DTS會在源庫中建立觸發器dts_cdc_sync_ddl、心跳錶dts_sync_progress、DDL儲存表dts_cdc_ddl_history;混合式增量同步處理模式,DTS會在源庫中建立觸發器dts_cdc_sync_ddl、心跳錶dts_sync_progress、DDL儲存表dts_cdc_ddl_history以及會開啟庫層級CDC和部分表CDC,建議源端開啟CDC的表資料變更量不超過1000 RPS。

  • 執行資料移轉前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料移轉。否則全量資料移轉時DTS佔用源和目標庫一定讀寫資源,可能會導致資料庫的負載上升。

  • 由於全量資料移轉會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量遷移完成後目標資料庫的表格儲存體空間會比源執行個體的表格儲存體空間大。

  • 請確認DTS對資料類型為FLOAT或DOUBLE的列的遷移精度是否符合業務預期。DTS會通過ROUND(COLUMN,PRECISION)來讀取這兩類列的值。如果沒有明確定義其精度,DTS對FLOAT的遷移精度為38位,對DOUBLE的遷移精度為308位。

  • DTS會嘗試恢複七天之內遷移失敗任務。因此業務切換至目標執行個體前,請務必結束或釋放該任務,或者將DTS訪問目標執行個體帳號的寫入權限用revoke命令回收掉。避免該任務被自動回復後,源端資料覆蓋目標執行個體的資料。

  • 若遷移任務包含增量資料移轉,則不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

    已開啟CDC的表不支援進行主鍵相關的變更。

  • 若單次遷移任務中開啟CDC的表數量大於DTS支援開啟CDC的表最大數量限制中設定的數量,則預檢查會失敗。

  • 若執行個體包含增量任務,且開啟CDC的表需要寫入的單欄位資料超過64 KB,則必須提前使用exec sp_configure 'max text repl size', -1;命令調整源庫的配置。

    說明

    CDC作業預設最大能處理的單欄位長度為64 KB。

  • 如需進行增量遷移,請禁用目標庫中已啟用的觸發器和外鍵,否則會導致遷移任務失敗。

  • 以同一SQL Server資料庫作為源庫的多個遷移執行個體,其增量資料擷取模組相互獨立。

  • 若執行個體運行失敗,DTS技術支援人員將在8小時內嘗試恢複該執行個體。在恢複失敗執行個體的過程中,可能會對該執行個體進行重啟、調整參數等操作。

    說明

    在調整參數時,僅會修改DTS執行個體的參數,不會對資料庫中的參數進行修改。可能修改的參數,包括但不限於修改執行個體參數中的參數。

  • 鑒於SQL Server作為商業化閉來源資料庫,其日誌格式在DTS進行增量變更資料擷取(CDC)與解析過程中,可能因已知或未知的格式特性限制而出現不可避免的問題。因此,在生產環境啟用SQL Server源端的DTS增量同步處理或遷移同步之前,建議客戶嚴格遵循POC測試標準,進行全情境覆蓋性驗證,包括所有業務變更類型、表結構調整及業務高峰壓力測試。由於SQL Server日誌格式及其潛在的不可預測特性,確保生產環境商務邏輯與POC階段一致,是保證DTS高效穩定啟動並執行關鍵。

特殊情況

  • 源執行個體為RDS SQL Server時,DTS會在源RDS SQL Server執行個體中建立一個rdsdt_dtsacct帳號用於資料移轉,請勿在任務運行過程中對該帳號進行刪除或密碼修改操作,否則可能會導致任務失敗。具體詳情,請參見系統帳號說明

  • 目標執行個體為RDS SQL Server時,DTS會自動在RDS SQL Server中建立資料庫,如果待遷移的資料庫名稱不符合RDS SQL Server的定義規範,您需要在配置遷移任務之前在RDS SQL Server中建立資料庫。相關操作,請參見建立資料庫

SQL Server遷移至AnalyticDB for MySQL

類型

說明

源庫限制

  • 頻寬要求:源庫所屬的伺服器需具備足夠出口頻寬,否則將影響資料移轉速率。

  • 待遷移的表需具備主鍵或唯一約束,且欄位具有唯一性,否則可能會導致目標資料庫中出現重複資料。

  • 如遷移對象為表層級,且需進行編輯(如表列名映射),則單次遷移任務僅支援遷移至多1000張表。當超出數量限制,任務提交後會顯示請求報錯,此時建議您拆分待遷移的表,分批配置多個任務,或者配置整庫的遷移任務。

  • 單次遷移任務僅支援遷移至多10個資料庫。當超出數量限制,會出現穩定性和效能問題的風險,此時建議您拆分待遷移的表,分批配置任務。

  • 若需要配置非整庫的遷移任務,則該任務中遷移至同一個目標庫的遷移對象,不支援配置Schema名稱不同而表名稱相同的對象。

  • 如需進行增量遷移,資料日誌:

    • 需開啟,備份模式設定為Full,且已成功執行過全量物理備份。

    • 如為增量遷移任務,DTS要求來源資料庫的資料日誌儲存24小時以上,如為全量遷移和增量遷移任務,DTS要求來源資料庫的資料日誌至少保留7天以上(您可在全量遷移完成後將資料日誌儲存時間設定為24小時以上),否則DTS可能因無法擷取資料日誌而導致任務失敗,極端情況下甚至可能會導致資料不一致或丟失。由於您所設定的資料日誌儲存時間低於DTS要求的時間進而導致的問題,不在DTS的SLA保障範圍內。

  • 若源庫待遷移的表需要開啟CDC,則需滿足以下條件,否則預檢查將會失敗。

    • sys.sysservers視圖的srvname欄位與SERVERPROPERTY函數傳回值保持一致。

    • 若源庫是自建SQL Server,則資料庫擁有者需是sa;若源庫是RDS SQL Server,則資料庫擁有者需是sqlsa。

    • 若源庫是企業版,則需為2008及以上版本。

    • 若源庫是標準版,則需為2016SP1及以上版本。

    • 若源庫為SQL Server 2017版(包括標準版和企業版),建議升級版本。

  • DTS使用fn_log函數擷取源庫日誌,而該函數有一定的效能瓶頸,請不要過早清理源庫日誌,否則可能會導致DTS任務失敗。

  • 源庫的操作限制:

    • 在庫表結構遷移和全量遷移階段,請勿執行庫或表結構變更的DDL操作,否則資料移轉任務會失敗。

    • 如僅執行全量資料移轉,請勿向源執行個體中寫入新的資料,否則會導致源和目標資料不一致。為即時保持資料一致性,建議選擇結構遷移、全量資料移轉和增量資料移轉。

  • 若源庫為唯讀執行個體,則不支援遷移DDL操作。

  • 若源庫為Azure SQL Database,則一個遷移執行個體僅支援遷移一個資料庫。

  • 若源庫為RDS SQL Server,且遷移執行個體包含增量遷移任務,為保障遷移執行個體穩定運行,請確保已關閉透明資料加密TDE(Transparent Data Encryption)功能。更多資訊,請參見關閉TDE

  • 若在庫表結構遷移任務運行前,源庫使用sp_rename命令修改了預存程序等對象的名稱,則可能會導致庫表結構遷移任務不符合預期或運行失敗。

    說明

    建議使用ALTER命令修改資料庫中對象的名稱。

  • 在混合式日誌解析模式下,源庫不支援連續執行(時間間隔小於10分鐘)多個加減列操作。例如,連續執行如下SQL會導致任務報錯。

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

  • 建議在全量資料移轉任務運行期間,確保源庫的交易處理模式參數READ_COMMITTED_SNAPSHOT為啟用狀態,以避免因共用鎖定(Shared Lock)對資料寫入產生影響。否則,可能會導致資料不一致、執行個體運行失敗等異常情況。由此引發的異常情況,不在DTS的SLA保障範圍內。

其他限制

  • 僅支援遷移基礎資料型別 (Elementary Data Type)的資料,不支援遷移CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY和使用CREATE TYPE命令自行定義的類型的資料。

  • 若目標庫的DDL寫入失敗,DTS任務會繼續運行,您需要在任務日誌中查看執行失敗的DDL。查看任務日誌的方法,請參見查詢任務日誌

  • 目標庫中需存在自訂主鍵,或者在庫表列配置階段配置主鍵列,否則可能會導致資料移轉失敗。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為解析源庫日誌做增量同步處理(不支援堆表),則待遷移的表需具備叢集索引,且叢集索引中需包含主鍵列;待遷移的表不支援堆表、無主鍵表、壓縮表、含計算資料行的表、含稀疏列的表。在混合式日誌解析模式下,沒有如上限制。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為非堆表用日誌解析增量同步處理,堆表用CDC增量同步處理(混合式日誌解析),則還有如下限制:

    • DTS的增量遷移依賴CDC組件,因此請確保源庫CDC作業正常運行,否則會導致DTS任務失敗。

    • CDC組件儲存的增量資料預設保留3天,建議您使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;命令對儲存時間進行合理調整。

      說明
      • <time>表示時間,單位為分鐘。

      • 若源庫單表的日均增量變更SQL超過一千萬條,建議將<time>取值為1440。

    • 單次遷移任務中,開啟CDC的表數量不建議超過1000,否則可能會導致任務延遲或不穩定。

    • DTS增量遷移任務的前置模組將會開啟源庫的CDC。在此過程中,由於SQL Server資料庫核心自身的限制,源庫將會出現短暫的鎖表現象。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為輪詢查詢CDC執行個體做增量同步處理,則還有如下限制:

    • DTS執行個體使用的源庫帳號需具備開啟CDC的許可權。開啟庫層級CDC需要使用sysadmin角色許可權的帳號,開啟表層級CDC需要高許可權帳號。

      說明
      • Azure SQL Database控制台提供的最高許可權帳號(伺服器管理員)滿足要求。其中基於vCore購買模型的資料庫,所有規格均支援開啟CDC;基於DTU購買模型的資料庫,規格需要為S3及以上才支援開啟CDC。

      • Amazon RDS for SQL Server的高許可權帳號滿足要求,支援為預存程序開啟庫層級的CDC。

      • 聚集資料行存放區索引表不支援開啟CDC。

      • DTS增量遷移任務的前置模組將會開啟源庫的CDC。在此過程中,由於SQL Server資料庫核心自身的限制,源庫將會出現短暫的鎖表現象。

    • DTS是通過輪詢方式去源庫查詢每張表的CDC執行個體(CDC Instance)以擷取增量資料,因此源庫待遷移表的數量不建議超過1000,否則可能會導致任務延遲或不穩定。

    • CDC組件儲存的增量資料預設保留3天,建議您使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;命令對儲存時間進行合理調整。

      說明
      • <time>表示時間,單位為分鐘。

      • 若源庫單表的日均增量變更SQL超過一千萬條,建議將<time>取值為1440。

    • 不支援連續執行加減列操作(一分鐘內執行超過兩次加列或減列的DDL),否則可能會導致任務失敗。

    • 不支援對源庫CDC執行個體(CDC Instance)做變更操作,否則可能會導致任務失敗或資料丟失。

  • 為保障增量資料移轉延遲的準確性,解析源端日誌做增量同步處理模式,DTS會在源庫中建立觸發器dts_cdc_sync_ddl、心跳錶dts_sync_progress、DDL儲存表dts_cdc_ddl_history;混合式增量同步處理模式,DTS會在源庫中建立觸發器dts_cdc_sync_ddl、心跳錶dts_sync_progress、DDL儲存表dts_cdc_ddl_history以及會開啟庫層級CDC和部分表CDC,建議源端開啟CDC的表資料變更量不超過1000 RPS。

  • 由於雲原生資料倉儲AnalyticDB MySQL版本身的使用限制,當雲原生資料倉儲AnalyticDB MySQL版中的節點磁碟空間使用量超過80%,資料寫入目標庫的效能變慢,導致DTS任務延遲;當使用量超過90%,資料無法寫入目標庫,導致DTS任務異常。請提前根據待遷移的對象預估所需空間,確保目的地組群具備充足的儲存空間。

  • 若DTS任務運行時目標AnalyticDB MySQL版 3.0叢集處於備份中的狀態,則會導致任務失敗。

  • 執行資料移轉前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料移轉。否則全量資料移轉時DTS佔用源和目標庫一定讀寫資源,可能會導致資料庫的負載上升。

  • 由於全量資料移轉會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量遷移完成後目標資料庫的表格儲存體空間會比源執行個體的表格儲存體空間大。

  • 請確認DTS對資料類型為FLOAT或DOUBLE的列的遷移精度是否符合業務預期。DTS會通過ROUND(COLUMN,PRECISION)來讀取這兩類列的值。如果沒有明確定義其精度,DTS對FLOAT的遷移精度為38位,對DOUBLE的遷移精度為308位。

  • DTS會嘗試恢複七天之內遷移失敗任務。因此業務切換至目標執行個體前,請務必結束或釋放該任務,或者將DTS訪問目標執行個體帳號的寫入權限用revoke命令回收掉。避免該任務被自動回復後,源端資料覆蓋目標執行個體的資料。

  • 若遷移任務包含增量資料移轉,則不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

    已開啟CDC的表不支援進行主鍵相關的變更。

  • 若單次遷移任務中開啟CDC的表數量大於DTS支援開啟CDC的表最大數量限制中設定的數量,則預檢查會失敗。

  • 若執行個體包含增量任務,且開啟CDC的表需要寫入的單欄位資料超過64 KB,則必須提前使用exec sp_configure 'max text repl size', -1;命令調整源庫的配置。

    說明

    CDC作業預設最大能處理的單欄位長度為64 KB。

  • 以同一SQL Server資料庫作為源庫的多個遷移執行個體,其增量資料擷取模組相互獨立。

  • 若執行個體運行失敗,DTS技術支援人員將在8小時內嘗試恢複該執行個體。在恢複失敗執行個體的過程中,可能會對該執行個體進行重啟、調整參數等操作。

    說明

    在調整參數時,僅會修改DTS執行個體的參數,不會對資料庫中的參數進行修改。可能修改的參數,包括但不限於修改執行個體參數中的參數。

  • 鑒於SQL Server作為商業化閉來源資料庫,其日誌格式在DTS進行增量變更資料擷取(CDC)與解析過程中,可能因已知或未知的格式特性限制而出現不可避免的問題。因此,在生產環境啟用SQL Server源端的DTS增量同步處理或遷移同步之前,建議客戶嚴格遵循POC測試標準,進行全情境覆蓋性驗證,包括所有業務變更類型、表結構調整及業務高峰壓力測試。由於SQL Server日誌格式及其潛在的不可預測特性,確保生產環境商務邏輯與POC階段一致,是保證DTS高效穩定啟動並執行關鍵。

特殊情況

源執行個體為RDS SQL Server時,DTS會在源RDS SQL Server執行個體中建立一個rdsdt_dtsacct帳號用於資料移轉,請勿在任務運行過程中對該帳號進行刪除或密碼修改操作,否則可能會導致任務失敗。具體詳情,請參見系統帳號說明

SQL Server遷移至雲原生資料倉儲AnalyticDB PostgreSQL版

類型

說明

源庫限制

  • 頻寬要求:源庫所屬的伺服器需具備足夠出口頻寬,否則將影響資料移轉速率。

  • 待遷移的表需具備主鍵或唯一約束,且欄位具有唯一性,否則可能會導致目標資料庫中出現重複資料。

  • 如遷移對象為表層級,且需進行編輯(如表列名映射),則單次遷移任務僅支援遷移至多1000張表。當超出數量限制,任務提交後會顯示請求報錯,此時建議您拆分待遷移的表,分批配置多個任務,或者配置整庫的遷移任務。

  • 單次遷移任務僅支援遷移至多10個資料庫。當超出數量限制,會出現穩定性和效能問題的風險,此時建議您拆分待遷移的表,分批配置任務。

  • 若需要配置非整庫的遷移任務,則該任務中遷移至同一個目標庫的遷移對象,不支援配置Schema名稱不同而表名稱相同的對象。

  • 如需進行增量遷移,資料日誌:

    • 需開啟,備份模式設定為Full,且已成功執行過全量物理備份。

    • 如為增量遷移任務,DTS要求來源資料庫的資料日誌儲存24小時以上,如為全量遷移和增量遷移任務,DTS要求來源資料庫的資料日誌至少保留7天以上(您可在全量遷移完成後將資料日誌儲存時間設定為24小時以上),否則DTS可能因無法擷取資料日誌而導致任務失敗,極端情況下甚至可能會導致資料不一致或丟失。由於您所設定的資料日誌儲存時間低於DTS要求的時間進而導致的問題,不在DTS的SLA保障範圍內。

  • 若源庫待遷移的表需要開啟CDC,則需滿足以下條件,否則預檢查將會失敗。

    • sys.sysservers視圖的srvname欄位與SERVERPROPERTY函數傳回值保持一致。

    • 若源庫是自建SQL Server,則資料庫擁有者需是sa;若源庫是RDS SQL Server,則資料庫擁有者需是sqlsa。

    • 若源庫是企業版,則需為2008及以上版本。

    • 若源庫是標準版,則需為2016SP1及以上版本。

    • 若源庫為SQL Server 2017版(包括標準版和企業版),建議升級版本。

  • DTS使用fn_log函數擷取源庫日誌,而該函數有一定的效能瓶頸,請不要過早清理源庫日誌,否則可能會導致DTS任務失敗。

  • 源庫的操作限制:

    • 在庫表結構遷移和全量遷移階段,請勿執行庫或表結構變更的DDL操作,否則資料移轉任務會失敗。

    • 如僅執行全量資料移轉,請勿向源執行個體中寫入新的資料,否則會導致源和目標資料不一致。為即時保持資料一致性,建議選擇結構遷移、全量資料移轉和增量資料移轉。

  • 若源庫為唯讀執行個體,則不支援遷移DDL操作。

  • 若源庫為Azure SQL Database,則一個遷移執行個體僅支援遷移一個資料庫。

  • 若源庫為RDS SQL Server,且遷移執行個體包含增量遷移任務,為保障遷移執行個體穩定運行,請確保已關閉透明資料加密TDE(Transparent Data Encryption)功能。更多資訊,請參見關閉TDE

  • 若在庫表結構遷移任務運行前,源庫使用sp_rename命令修改了預存程序等對象的名稱,則可能會導致庫表結構遷移任務不符合預期或運行失敗。

    說明

    建議使用ALTER命令修改資料庫中對象的名稱。

  • 在混合式日誌解析模式下,源庫不支援連續執行(時間間隔小於10分鐘)多個加減列操作。例如,連續執行如下SQL會導致任務報錯。

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

  • 建議在全量資料移轉任務運行期間,確保源庫的交易處理模式參數READ_COMMITTED_SNAPSHOT為啟用狀態,以避免因共用鎖定(Shared Lock)對資料寫入產生影響。否則,可能會導致資料不一致、執行個體運行失敗等異常情況。由此引發的異常情況,不在DTS的SLA保障範圍內。

其他限制

  • 僅支援遷移基礎資料型別 (Elementary Data Type)的資料,不支援遷移CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY和使用CREATE TYPE命令自行定義的類型的資料。

  • 不支援遷移INDEX、VIEW、PROCEDURE、FUNCTION、TRIGGER、FK、INDEX、FULL_TEXT_INDEX、DATATYPE、DEFAULT、SYNONYM、CATALOG、PLAN_GUIDE、DEFAULT_CONSTRAINT、UK、CK、SEQUENCE。

  • 選擇遷移對象時支援的粒度為表,支援修改列的映射關係。若使用列映射時為非全表遷移或者源與目標表結構不一致,則目標端比源端缺少的列的資料將會丟失。

  • 目標表不支援AO表。

  • 若待遷移的表存在主鍵,則目標表的主鍵列需與源表一致;若待遷移的表不存在主鍵,則目標表的主鍵列需與分布鍵保持一致。

  • 目標表的唯一鍵(含主鍵列)必須包含分布鍵的所有列。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為解析源庫日誌做增量同步處理(不支援堆表),則待遷移的表需具備叢集索引,且叢集索引中需包含主鍵列;待遷移的表不支援堆表、無主鍵表、壓縮表、含計算資料行的表、含稀疏列的表。在混合式日誌解析模式下,沒有如上限制。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為非堆表用日誌解析增量同步處理,堆表用CDC增量同步處理(混合式日誌解析),則還有如下限制:

    • DTS的增量遷移依賴CDC組件,因此請確保源庫CDC作業正常運行,否則會導致DTS任務失敗。

    • CDC組件儲存的增量資料預設保留3天,建議您使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;命令對儲存時間進行合理調整。

      說明
      • <time>表示時間,單位為分鐘。

      • 若源庫單表的日均增量變更SQL超過一千萬條,建議將<time>取值為1440。

    • 單次遷移任務中,開啟CDC的表數量不建議超過1000,否則可能會導致任務延遲或不穩定。

    • DTS增量遷移任務的前置模組將會開啟源庫的CDC。在此過程中,由於SQL Server資料庫核心自身的限制,源庫將會出現短暫的鎖表現象。

  • 若在對象配置階段將SQLServer增量同步處理模式選擇為輪詢查詢CDC執行個體做增量同步處理,則還有如下限制:

    • DTS執行個體使用的源庫帳號需具備開啟CDC的許可權。開啟庫層級CDC需要使用sysadmin角色許可權的帳號,開啟表層級CDC需要高許可權帳號。

      說明
      • Azure SQL Database控制台提供的最高許可權帳號(伺服器管理員)滿足要求。其中基於vCore購買模型的資料庫,所有規格均支援開啟CDC;基於DTU購買模型的資料庫,規格需要為S3及以上才支援開啟CDC。

      • Amazon RDS for SQL Server的高許可權帳號滿足要求,支援為預存程序開啟庫層級的CDC。

      • 聚集資料行存放區索引表不支援開啟CDC。

      • DTS增量遷移任務的前置模組將會開啟源庫的CDC。在此過程中,由於SQL Server資料庫核心自身的限制,源庫將會出現短暫的鎖表現象。

    • DTS是通過輪詢方式去源庫查詢每張表的CDC執行個體(CDC Instance)以擷取增量資料,因此源庫待遷移表的數量不建議超過1000,否則可能會導致任務延遲或不穩定。

    • CDC組件儲存的增量資料預設保留3天,建議您使用exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>;命令對儲存時間進行合理調整。

      說明
      • <time>表示時間,單位為分鐘。

      • 若源庫單表的日均增量變更SQL超過一千萬條,建議將<time>取值為1440。

    • 不支援連續執行加減列操作(一分鐘內執行超過兩次加列或減列的DDL),否則可能會導致任務失敗。

    • 不支援對源庫CDC執行個體(CDC Instance)做變更操作,否則可能會導致任務失敗或資料丟失。

  • 為保障增量資料移轉延遲的準確性,解析源端日誌做增量同步處理模式,DTS會在源庫中建立觸發器dts_cdc_sync_ddl、心跳錶dts_sync_progress、DDL儲存表dts_cdc_ddl_history;混合式增量同步處理模式,DTS會在源庫中建立觸發器dts_cdc_sync_ddl、心跳錶dts_sync_progress、DDL儲存表dts_cdc_ddl_history以及會開啟庫層級CDC和部分表CDC,建議源端開啟CDC的表資料變更量不超過1000 RPS。

  • 執行資料移轉前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料移轉。否則全量資料移轉時DTS佔用源和目標庫一定讀寫資源,可能會導致資料庫的負載上升。

  • 由於全量資料移轉會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量遷移完成後目標資料庫的表格儲存體空間會比源執行個體的表格儲存體空間大。

  • 請確認DTS對資料類型為FLOAT或DOUBLE的列的遷移精度是否符合業務預期。DTS會通過ROUND(COLUMN,PRECISION)來讀取這兩類列的值。如果沒有明確定義其精度,DTS對FLOAT的遷移精度為38位,對DOUBLE的遷移精度為308位。

  • DTS會嘗試恢複七天之內遷移失敗任務。因此業務切換至目標執行個體前,請務必結束或釋放該任務,或者將DTS訪問目標執行個體帳號的寫入權限用revoke命令回收掉。避免該任務被自動回復後,源端資料覆蓋目標執行個體的資料。

  • 若遷移任務包含增量資料移轉,則不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

    已開啟CDC的表不支援進行主鍵相關的變更。

  • 若單次遷移任務中開啟CDC的表數量大於DTS支援開啟CDC的表最大數量限制中設定的數量,則預檢查會失敗。

  • 若執行個體包含增量任務,且開啟CDC的表需要寫入的單欄位資料超過64 KB,則必須提前使用exec sp_configure 'max text repl size', -1;命令調整源庫的配置。

    說明

    CDC作業預設最大能處理的單欄位長度為64 KB。

  • 以同一SQL Server資料庫作為源庫的多個遷移執行個體,其增量資料擷取模組相互獨立。

  • 若執行個體運行失敗,DTS技術支援人員將在8小時內嘗試恢複該執行個體。在恢複失敗執行個體的過程中,可能會對該執行個體進行重啟、調整參數等操作。

    說明

    在調整參數時,僅會修改DTS執行個體的參數,不會對資料庫中的參數進行修改。可能修改的參數,包括但不限於修改執行個體參數中的參數。

  • 鑒於SQL Server作為商業化閉來源資料庫,其日誌格式在DTS進行增量變更資料擷取(CDC)與解析過程中,可能因已知或未知的格式特性限制而出現不可避免的問題。因此,在生產環境啟用SQL Server源端的DTS增量同步處理或遷移同步之前,建議客戶嚴格遵循POC測試標準,進行全情境覆蓋性驗證,包括所有業務變更類型、表結構調整及業務高峰壓力測試。由於SQL Server日誌格式及其潛在的不可預測特性,確保生產環境商務邏輯與POC階段一致,是保證DTS高效穩定啟動並執行關鍵。

特殊情況

源執行個體為RDS SQL Server時,DTS會在源RDS SQL Server執行個體中建立一個rdsdt_dtsacct帳號用於資料移轉,請勿在任務運行過程中對該帳號進行刪除或密碼修改操作,否則可能會導致任務失敗。具體詳情,請參見系統帳號說明