You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL Data Sync同步停滞求助:单表千万级数据卡住超2天

处理Azure SQL Data Sync单表同步停滞的方案
  • 检查同步日志与数据库错误

    • 登录Azure门户,进入目标同步组的同步历史记录,筛选涉事表的日志,排查是否存在主键冲突、超时、权限不足等明确报错
    • 在源库和目标库执行以下查询,提取近3天的错误日志,定位Data Sync相关的异常:
      SELECT * FROM sys.event_log 
      WHERE event_type = 'error' 
        AND start_time > DATEADD(day, -3, GETDATE())
      
  • 排查表级阻塞与锁等待

    • 在源库和目标库分别执行,查看涉事表的锁占用情况:
      SELECT * FROM sys.dm_tran_locks 
      WHERE resource_type = 'OBJECT' 
        AND resource_associated_entity_id = OBJECT_ID('你的表名')
      
    • 查询当前数据库的运行会话,识别长时间等待的进程(如PAGEIOLATCH_*、LCK_M_*类型等待):
      SELECT session_id, status, command, wait_type, wait_time 
      FROM sys.dm_exec_requests 
      WHERE database_id = DB_ID('你的数据库名')
      
  • 验证数据一致性与缺失范围

    • 统计源表与目标表的记录数,确认实际差异:
      -- 源库执行
      SELECT COUNT(*) AS 源表记录数 FROM 源表名;
      -- 目标库执行
      SELECT COUNT(*) AS 目标表记录数 FROM 目标表名;
      
    • 若存在差异,按主键分段查询定位缺失区间,例如:
      -- 源库分段统计
      SELECT id_range = CONVERT(VARCHAR(20), FLOOR(id/100000)*100000) + '-' + CONVERT(VARCHAR(20), FLOOR(id/100000)*100000+99999),
             COUNT(*) AS 数量
      FROM 源表名
      GROUP BY FLOOR(id/100000)
      ORDER BY id_range;
      -- 目标库执行相同语句对比
      
  • 重置涉事表的同步配置

    • 暂停当前同步组,进入表映射设置,移除涉事表的同步规则并保存
    • 重新添加该表的同步配置,选择仅同步增量数据(若目标表已有大部分有效数据);若数据差异无法明确,可选择重新初始化该表(注意会覆盖目标表现有数据,操作前需备份)
  • 优化大表同步性能

    • 确保源表和目标表的主键、同步筛选列上存在有效索引,避免同步时全表扫描
    • 临时调增目标数据库的计算资源(DTU/VCore),待同步完成后再降回原规格
    • 调整同步组的同步间隔,延长至15-30分钟,减少高频同步带来的资源竞争
  • 强制终止并重启停滞作业

    • 进入源SQL Server的作业面板,找到名称包含Sync_<同步组ID>的Data Sync作业
    • 查看作业历史,终止处于停滞状态的作业步骤,随后重启同步组

内容的提问来源于stack exchange,提问作者sanheialan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:07:23