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

为什么运行Azure Data Factory(ADF)复制活动时数据库会被锁定?

表锁死及超时问题根因
  • 并行写入触发表级锁冲突:多个Copy Activity并行写入同一张目标表时,默认配置下每个写入任务都会申请表级排他锁,锁等待队列堆积后整张表被长时间持有,后续的元数据查询、表操作都无法获取共享锁,最终触发超时。
  • 大数据量长事务持有锁:未配置分批提交的情况下,单个Copy Activity会在全量数据写入完成后才提交事务释放锁,大数据量场景下单次锁持有时间可达到数分钟甚至更久,并行场景下锁占用时间会进一步被拉长。
  • 锁升级机制放大影响:目标表写入数据量超过数据库锁升级阈值时,数据库会自动将批量行锁/页锁升级为表级锁,进一步扩大锁影响范围。
  • 表附属结构延长锁持有时间:目标表的非聚集索引、外键约束、触发器会在写入时同步执行校验和更新操作,单次写入的执行时间变长,锁持有时间也同步增加。
修复方案
  • 降低同表写入并发度:将指向同一张表的Copy Activity并行度调整为1,或在复制活动接收器配置中将最大并发连接数设为1,避免多个写入任务同时争抢锁资源。
  • 开启分批提交配置:在ADF复制活动的接收器设置中配置批量写入大小(建议设置为1000~10000行,根据行大小调整),单批次写入完成后立即提交释放锁,避免长事务占用锁。
  • 临时关闭非必要表结构:大数据量写入前先禁用目标表的非聚集索引、外键约束和触发器,写入完成后再重建开启,可降低70%以上的写入耗时和锁持有时间。
  • 新增分片写入逻辑:使用ForEach Activity将源数据按时间、主键等维度拆分为多个互不重叠的分片,每个Copy Activity仅写入单个分片的数据,避免写入范围重叠触发锁升级。
  • 调整数据库锁配置:如果目标库为SQL Server,可执行ALTER TABLE 表名 SET (LOCK_ESCALATION = DISABLE)关闭表的自动锁升级,强制使用行锁/页锁,避免锁范围扩大。

操作超时错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:27:05