全部產品
Search
文件中心

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

更新時間:Dec 02, 2025

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

源庫為SQL Server的同步方案概覽

根據同步方案,查看同步任務的注意事項及限制:

說明

DTS預設同步到目標資料庫中時會取消外鍵約束,因此來源資料庫的級聯、刪除等操作不會同步到如下目標資料庫:

  • SQL Server

  • MySQL(RDS MySQL、自建MySQL)

  • PolarDB MySQL

  • AnalyticDB for MySQL

  • 雲原生資料倉儲AnalyticDB PostgreSQL

  • 阿里雲流式資料服務DataHub

SQL Server間的同步

具體注意事項及限制如下:

類型

說明

源庫限制

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

  • 若同步對象為表層級,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000或時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交後可能會顯示請求報錯。

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

  • 不支援同步記憶體最佳化表。

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

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

  • 資料日誌:

    • 需開啟,備份模式設定為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版(包括標準版和企業版),建議升級版本。

  • 若源庫為唯讀執行個體,則不支援同步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('');
  • 在庫表結構同步和全量同步階段,請勿執行庫或表結構變更的DDL操作,否則會導致資料同步任務失敗。

    說明

    在全量同步階段,DTS將對源庫進行查詢,這將產生中繼資料鎖,從而可能阻礙來源資料庫的DDL操作執行。

  • 若源庫為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。

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

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

  • 若在對象配置階段將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。

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

  • 全量初始化會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量初始化完成後目標執行個體的資料表空間比源執行個體的資料表空間大。

  • 在DTS同步期間,不允許有除DTS外的資料寫入目標庫,否則會導致源庫與目標庫資料不一致。例如,有除DTS外的資料寫入目標庫時,使用DMS執行線上DDL變更,可能引起目標庫資料丟失。

  • 同步執行個體不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

    已開啟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同步至MySQL

當目標為MySQL,包括自建MySQL、RDS MySQL時,具體注意事項及限制如下:

類型

說明

源庫限制

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

  • 若同步對象為表層級,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000或時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交後可能會顯示請求報錯。

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

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

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

  • 資料日誌:

    • 需開啟,備份模式設定為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版(包括標準版和企業版),建議升級版本。

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

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

  • 若源庫為RDS SQL Server,為保障同步執行個體穩定運行,請確保已關閉透明資料加密TDE(Transparent Data Encryption)功能。更多資訊,請參見關閉TDE

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 若在庫表結構同步任務運行前,源庫使用sp_rename命令修改了預存程序等對象的名稱,則可能會導致庫表結構同步任務不符合預期或運行失敗。

    說明

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

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

    說明

    在全量同步階段,DTS將對源庫進行查詢,這將產生中繼資料鎖,從而可能阻礙來源資料庫的DDL操作執行。

  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

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

其他限制

  • 同步對象的要求:

    • 支援結構初始化的對象有database、schema、table。

    • 不支援同步資料類型為CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY和使用CREATE TYPE命令自行定義的類型的資料。

    • 不支援同步PROCEDURE、FUNCTION、TRIGGER、DATATYPE、SYNONYM、CATALOG、PLAN_GUIDE、SEQUENCE。

  • 若待同步的資料中包含需要四位元組儲存的內容(例如生僻字、表情等資訊),則目標端接收資料的資料庫和表必須使用utf8mb4字元集。

    說明

    若您使用DTS同步庫表結構,則需將目標庫中執行個體層級的參數character_set_server設定為utf8mb4。

  • 若在對象配置階段將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。

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

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

  • 若在對象配置階段將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)做變更操作,否則可能會導致任務失敗或資料丟失。

  • 暫不支援複雜的同步DDL操作。

  • 為保障增量資料同步延遲的準確性,解析源端日誌做增量同步處理模式,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。

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

  • 全量初始化會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量初始化完成後目標執行個體的資料表空間比源執行個體的資料表空間大。

  • 在DTS同步期間,不允許有除DTS外的資料寫入目標庫,否則會導致源庫與目標庫資料不一致。例如,有除DTS外的資料寫入目標庫時,使用DMS執行線上DDL變更,可能引起目標庫資料丟失。

  • 同步執行個體不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

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

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

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

    說明

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

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

  • 若您將列名僅大小寫不同的欄位寫入到目標MySQL資料庫的同一個表中,可能會因為MySQL資料庫列名大小寫不敏感,導致同步結果不符合預期。

  • 在資料同步完成後(執行個體的運行狀態已完成),建議使用analyze table <表名>命令以確認資料均已寫入目標表。例如,在目標MySQL資料庫觸發HA切換機制後,可能會導致資料唯寫到了記憶體,從而造成資料丟失。

  • 若您需要使用修改同步對象功能,則不支援移除資料庫的操作。

  • 以同一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同步至PolarDB MySQL

具體注意事項及限制如下:

類型

說明

源庫限制

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

  • 若同步對象為表層級,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000或時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交後可能會顯示請求報錯。

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

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

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

  • 資料日誌:

    • 需開啟,備份模式設定為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版(包括標準版和企業版),建議升級版本。

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

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

  • 若源庫為RDS SQL Server,為保障同步執行個體穩定運行,請確保已關閉透明資料加密TDE(Transparent Data Encryption)功能。更多資訊,請參見關閉TDE

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 若在庫表結構同步任務運行前,源庫使用sp_rename命令修改了預存程序等對象的名稱,則可能會導致庫表結構同步任務不符合預期或運行失敗。

    說明

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

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

    說明

    在全量同步階段,DTS將對源庫進行查詢,這將產生中繼資料鎖,從而可能阻礙來源資料庫的DDL操作執行。

  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

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

其他限制

  • 同步對象的要求:

    • 支援結構初始化的對象有database、schema、table。

    • 不支援同步資料類型為CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY和使用CREATE TYPE命令自行定義的類型的資料。

    • 不支援同步PROCEDURE、FUNCTION、TRIGGER、DATATYPE、SYNONYM、CATALOG、PLAN_GUIDE、SEQUENCE。

  • 若待同步的資料中包含需要四位元組儲存的內容(例如生僻字、表情等資訊),則目標端接收資料的資料庫和表必須使用utf8mb4字元集。

    說明

    若您使用DTS同步庫表結構,則需將目標庫中執行個體層級的參數character_set_server設定為utf8mb4。

  • 若在對象配置階段將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。

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

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

  • 若在對象配置階段將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)做變更操作,否則可能會導致任務失敗或資料丟失。

  • 暫不支援複雜的同步DDL操作。

  • 為保障增量資料同步延遲的準確性,解析源端日誌做增量同步處理模式,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。

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

  • 全量初始化會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量初始化完成後目標執行個體的資料表空間比源執行個體的資料表空間大。

  • 在DTS同步期間,不允許有除DTS外的資料寫入目標庫,否則會導致源庫與目標庫資料不一致。例如,有除DTS外的資料寫入目標庫時,使用DMS執行線上DDL變更,可能引起目標庫資料丟失。

  • 同步執行個體不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

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

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

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

    說明

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

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

  • 若您需要使用修改同步對象功能,則不支援移除資料庫的操作。

  • 以同一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 for MySQL

類型

說明

源庫限制

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

  • 若同步對象為表層級,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000或時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交後可能會顯示請求報錯。

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

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

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

  • 資料日誌:

    • 需開啟,備份模式設定為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版(包括標準版和企業版),建議升級版本。

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

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

  • 若源庫為RDS SQL Server,為保障同步執行個體穩定運行,請確保已關閉透明資料加密TDE(Transparent Data Encryption)功能。更多資訊,請參見關閉TDE

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

    ALTER TABLE test_table DROP COLUMN Flag;
    ALTER TABLE test_table ADD Remark nvarchar(50) not null default('');
  • 若在庫表結構同步任務運行前,源庫使用sp_rename命令修改了預存程序等對象的名稱,則可能會導致庫表結構同步任務不符合預期或運行失敗。

    說明

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

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

    說明

    在全量同步階段,DTS將對源庫進行查詢,這將產生中繼資料鎖,從而可能阻礙來源資料庫的DDL操作執行。

  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

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

其他限制

  • 同步對象的要求:

    • 支援結構初始化的對象有Schema、Table、View、Function和Procedure。

      警告

      由於此情境屬於異構資料庫間的資料同步,資料類型無法一一對應,可能會導致任務失敗或資料丟失,請謹慎評估資料類型的映射關係對業務的影響,詳情請參見結構初始化涉及的資料類型映射關係

    • 不支援結構初始化的結構對象有:assemblies、service broker、全文索引、全文檢索目錄、分布式schema、分布式函數、CLR預存程序、CLR純量涵式、CLR資料表值函式、內部表、系統、彙總函式。

    • 不支援同步資料類型為CURSOR、ROWVERSION、SQL_VARIANT、HIERARCHYID、POLYGON、GEOMETRY、GEOGRAPHY和使用CREATE TYPE命令自行定義的類型的資料。

    • 不支援同步含有計算資料行的表。

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

  • 若在對象配置階段將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。

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

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

  • 若在對象配置階段將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任務異常。請提前根據待同步的對象預估所需空間,確保目的地組群具備充足的儲存空間。

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

  • 全量初始化會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量初始化完成後目標執行個體的資料表空間比源執行個體的資料表空間大。

  • 在DTS同步期間,不允許有除DTS外的資料寫入目標庫,否則會導致源庫與目標庫資料不一致。例如,有除DTS外的資料寫入目標庫時,使用DMS執行線上DDL變更,可能引起目標庫資料丟失。

  • 同步執行個體不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

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

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

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

    說明

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

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

  • 若您需要使用修改同步對象功能,則不支援移除資料庫的操作。

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

  • 以同一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版

具體注意事項及限制如下:

類型

說明

源庫限制

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

  • 若同步對象為表層級,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000或時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交後可能會顯示請求報錯。

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

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

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

  • 資料日誌:

    • 需開啟,備份模式設定為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版(包括標準版和企業版),建議升級版本。

  • 若源庫為唯讀執行個體,則不支援同步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('');
  • 在庫表結構同步和全量同步階段,請勿執行庫或表結構變更的DDL操作,否則會導致資料同步任務失敗。

    說明

    在全量同步階段,DTS將對源庫進行查詢,這將產生中繼資料鎖,從而可能阻礙來源資料庫的DDL操作執行。

  • 若源庫為Web版的RDS SQL Server,則在配置任務時SQLServer增量同步處理模式需選擇為解析源庫日誌做增量同步處理(不支援堆表)

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

其他限制

  • 同步對象的要求:

    • 支援結構初始化的對象有Schema、Table、View、Function和Procedure。

      警告

      由於此情境屬於異構資料庫間的資料同步,資料類型無法一一對應,可能會導致任務失敗或資料丟失,請謹慎評估資料類型的映射關係對業務的影響,詳情請參見結構初始化涉及的資料類型映射關係

    • 不支援結構初始化的結構對象有:assemblies、service broker、全文索引、全文檢索目錄、分布式schema、分布式函數、CLR預存程序、CLR純量涵式、CLR資料表值函式、內部表、系統、彙總函式。

    • 不支援同步資料類型為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。

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

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

  • 若在對象配置階段將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。

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

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

  • 若在對象配置階段將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。

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

  • 全量初始化會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量初始化完成後目標執行個體的資料表空間比源執行個體的資料表空間大。

  • 在DTS同步期間,不允許有除DTS外的資料寫入目標庫,否則會導致源庫與目標庫資料不一致。例如,有除DTS外的資料寫入目標庫時,使用DMS執行線上DDL變更,可能引起目標庫資料丟失。

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

  • 同步執行個體不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

    已開啟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同步至阿里雲流式資料服務DataHub

具體注意事項及限制如下:

類型

說明

源庫限制

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

  • 若同步對象為表層級,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000或時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交後可能會顯示請求報錯。

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

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

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

  • 資料日誌:

    • 需開啟,備份模式設定為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版(包括標準版和企業版),建議升級版本。

  • 若源庫為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('');
  • 在庫表結構同步階段,請勿執行庫或表結構變更的DDL操作,否則會導致資料同步任務失敗。

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

其他限制

  • 僅支援增量同步處理和庫表結構同步,不支援全量同步。

  • 目標DataHub中單個String欄位的長度最大支援2 MB。

  • 同步對象的要求:

    • 支援結構初始化的對象有Schema、Table、View、Function和Procedure。

      警告

      由於此情境屬於異構資料庫間的資料同步,資料類型無法一一對應,可能會導致任務失敗或資料丟失,請謹慎評估資料類型的映射關係對業務的影響,詳情請參見結構初始化涉及的資料類型映射關係

    • 不支援結構初始化的結構對象有:assemblies、service broker、全文索引、全文檢索目錄、分布式schema、分布式函數、CLR預存程序、CLR純量涵式、CLR資料表值函式、內部表、系統、彙總函式。

    • 不支援同步資料類型為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。

  • 為保障增量資料同步延遲的準確性,解析源端日誌做增量同步處理模式,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。

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

  • 全量初始化會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量初始化完成後目標執行個體的資料表空間比源執行個體的資料表空間大。

  • 在DTS同步期間,不允許有除DTS外的資料寫入目標庫,否則會導致源庫與目標庫資料不一致。例如,有除DTS外的資料寫入目標庫時,使用DMS執行線上DDL變更,可能引起目標庫資料丟失。

  • 同步執行個體不支援重建索引操作,否則可能造成任務失敗,甚至資料丟失。

    說明

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

  • 若單次同步任務中開啟CDC的表數量大於1000,則預檢查會失敗。

  • 若開啟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帳號用於資料同步,請勿在任務運行過程中對該帳號進行刪除或密碼修改操作,否則可能會導致任務失敗。具體詳情,請參見系統帳號說明