一款专为企业级多账套环境(如金蝶、用友等 ERP 生产环境)打造的 SQL Server 事务日志(LDF)批量资产盘点与安全自适应收缩工具。
纯绿色单文件设计,零外部依赖,完美向后兼容至 Windows XP / Server 2003,向前兼容至最新 Windows Server 环境。
- 行级资产盘点网格:一键连接后,主界面右侧常驻实例内所有数据库的日志逻辑名、总体积、已用空间及已用率,资产状态一目了然。
- 行级自适应策略审计:系统根据日志体积自动执行智能分治路由:
- 普通账套 ($\le$50GB):默认分派
直接指定大小(10M)策略,确保清洗效率。 - 超大账套 ($>$50GB):自适应分派
循环递减法(20%)梯度下楼梯策略,严防磁盘 I/O 锁死。 - 运维人员可在网格内通过 ComboBox 针对每一行单独调整执行策略。
- 普通账套 ($\le$50GB):默认分派
- 流式运维记录看板:左侧面板升级为带流式时间戳的动态处理记录流,批量处理状态(🟢 完成 / 🔴 失败及原因)实时滚动刷新,杜绝界面假死。
- 高弹性响应式布局:表单全面支持最大化、全屏及自由拉伸,自适应高分辨率机房大屏。
在执行“循环递减”策略时,针对底层 VLF(虚拟日志文件)因处于活动状态(Active)而无法释放的物理阻塞,工具在每次收缩命令后增加轻量级动态体积对冲审计。一旦比对发现体积不再变小,将保护性地主动跳出当前账套循环,并强制执行最后一次 TRUNCATEONLY 截断收尾,彻底规避因死扣目标值导致的线程死循环与程序挂起。
针对企业历史遗留的纯数字、带减号、空格等特殊账套名称导致的 DBCC SQLPERF(LOGSPACE) 输出行数据错位痛点,工具采用两步降维防御:临时匿名表一律改用纯文本(VARCHAR)无条件接收,确保第一步绝对不报类型转换错误;随后在输出给 C# 前通过 ISNUMERIC() 逐行清洗拦截,脏字符直接归零(ELSE 0)保护,具备极强的穿透力。
虽然工具提供了完备的防呆机制,但在面对重要生产财务账套时,仍需铁腕固守以下运维流程:
- 【前置完整备份】:在批量收缩前,务必通过微软原生 Management Studio (SSMS) 对勾选的目标账套执行一次完整备份。
- 【行级策略清洗】:备份成功后,通过本工具勾选目标库,调配好行级策略,点击
开始批量清理选中的日志执行安全清洗。 - 【后置重建日志】:清洗任务完成后,必须立即再次执行一次完整备份,用以重新建立干净健康的事务日志链,防止因日志截断引发后续系统的差异/增量备份机制瘫痪。
- 开发环境:Visual Studio 2012 / 2019+
- 目标框架:.NET Framework 4.0 (支持在无任何高版本运行库的古董机房服务器上直接绿色运行)
- 数据库兼容性:SQL Server 2000 / 2005 / 2008 / 2012 / 2014 / 2016 / 2017 / 2019 / 2022+
SQL Server 日志收缩严禁直接使用 DBCC SHRINKDATABASE,这会产生严重的物理磁盘碎片。推荐的标准安全做法是:截断日志 (\rightarrow ) 将恢复模式切换为 SIMPLE (\rightarrow ) 释放空间 (\rightarrow ) 切回 FULL。
本项目基于 MIT License 许可证开源。包含强烈的免责声明(“AS IS”),商业或个人魔改、闭源、分发完全自由,原作者不承担由于生产环境不规范操作引发的任何数据安全或运维事故责任。
