Skip to content

排障:单据锁定,无法审核/弃审

现象:操作员审核或弃审单据时提示「单据已被锁定」「当前单据正在被其他操作员使用」,重启客户端无效,多张单据都锁死。

影响范围

  • 采购入库单、销售出库单、其他出入库单审核/弃审
  • 严重时月结卡住(月结也要锁单)

环境

  • 用友 U8 全系(V12-V16 常见)
  • 数据库:SQL Server

排查路径

  1. 判断锁的类型:换台机器试同一张单据;多张单据都锁 = 任务残留,单张锁 = 真有人操作
  2. 查任务残留表(头号嫌疑):UFSystem 库的 UA_Task
  3. 查数据库阻塞sys.dm_exec_requestsblocking_session_id
  4. 回溯异常退出:断电、强杀进程、网络中断,都会留残留

根因

U8 锁机制依赖 UA_Task 任务表。正常退出会清理任务记录,异常退出(强杀客户端/断网)不清理,残留任务把单据锁死。不是数据坏了。

处理步骤

1. 查看残留任务

sql
-- 在 UFSystem 库执行
SELECT cAcc_Id, cUser_Id, cTaskId, dStartTime, dSaveTime
FROM UA_Task
WHERE dSaveTime < DATEADD(HOUR, -2, GETDATE());

2. 确认无活动连接后删除

sql
-- DELETE FROM UA_Task
-- WHERE dSaveTime < DATEADD(HOUR, -2, GETDATE());

⚠️ 危险操作:删除前务必确认这些任务对应的用户没在操作。先查询、跟用户确认,再删。批量删除在业务低峰做。

3. 仍不行 → 重启应用服务

清理残留后仍锁,再考虑重启 U8 应用服务(不是数据库)。重启会踢所有在线用户,作为最后手段。

预防措施

  • 客户端配置超时自动清理(应用服务器配置里设置会话超时)
  • 培训用户:不要用任务管理器强杀客户端,正常退出
  • 出问题先查 UA_Task,别一上来重启服务器

参考

内容已脱敏 · 不含客户名称与真实金额

微信公众号显林的随笔

ERP 实施笔记 · 案例复盘 · 资料更新提醒
微信搜一搜「显林的随笔」即可关注

二维码待补
(林哥提供后替换)