Azure DevOps Server 2022中prc_CleanupDeletedFileContent的替代方案咨询
Azure DevOps Server 2022 释放已删除内容占用空间的解决方案
Azure DevOps Server默认采用软删除机制,删除内容后仅标记状态,不会立即释放物理空间。2022版本确实移除了旧的prc_CleanupDeletedFileContent存储过程,以下是替代方案和空间释放方法:
一、使用tf destroy彻底销毁版本控制内容
如果删除的是版本控制中的文件/文件夹,直接用tf destroy命令触发物理清理:
tf destroy /collection:http://<你的服务器地址>:8080/tfs/<集合名称> $/项目路径/目标内容 /startcleanup
- 执行前确认目标内容已在版本控制中被标记为删除状态;
/startcleanup参数会立即启动清理流程,无需等待定时作业。
二、利用内置定时清理作业
Azure DevOps Server 2022内置了自动清理作业,确保它正常运行:
- 打开Azure DevOps Server管理控制台;
- 依次进入应用层 > 作业代理池 > 作业代理;
- 找到
Team Foundation Server File Content Cleanup作业,启用并手动触发运行,它会自动清理所有已标记为销毁的文件内容。
三、手动执行数据库清理存储过程
如果定时作业未及时生效,可直接在集合数据库(Tfs_<集合名>)中执行新的清理存储过程:
-- 清理7天前已标记为销毁的文件内容,可根据需求调整天数 EXEC prc_DestroyUnusedFileContent @destroyThresholdDays = 7
执行完清理后,收缩数据库释放物理空间:
USE Tfs_<集合名> GO -- 收缩数据库,保留10%空闲空间,可调整百分比 DBCC SHRINKDATABASE(N'Tfs_<集合名>', 10) GO
注意:收缩会导致索引碎片化,建议重建核心表索引:
USE Tfs_<集合名> GO ALTER INDEX ALL ON tbl_FileContent REBUILD GO
四、清理其他占用空间的资源
除了文件内容,以下部分也可能占用大量空间:
- 批量删除旧的构建/发布记录:进入项目管道 > 构建/发布,选择旧记录批量删除;
- 清理测试结果和附件:删除废弃的测试运行记录、工作项附件,触发清理作业即可。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

