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

如何缩减AzureDevOps(又名TFS)数据库大小并回收磁盘空间

关于Azure DevOps/TFS tbl_content清理与磁盘空间回收的问题解答

1. prc_CleanupDeletedFileContent 和 prc_DeleteUnusedFiles 是否会删除tbl_content中的记录?

这两个存储过程是配合完成清理的,分工明确:

  • prc_DeleteUnusedFiles:不会直接删除tbl_content记录,它负责扫描系统内所有文件的引用关系(比如构建、发布、工件的关联链路),把无任何有效引用的文件标记为删除状态(更新tbl_FileMetadata等关联表的状态字段)。
  • prc_CleanupDeletedFileContent:会真正删除tbl_content中的记录。它会筛选出已被标记为删除且超过指定保留期的文件内容,从tbl_content中移除对应的二进制数据记录。

简单来说:前者负责标记“该删的文件”,后者负责真正清理tbl_content里的废弃内容。

2. 回收磁盘空间的完整步骤

前置准备

  • 必须先备份项目集合数据库:执行任何数据库级清理操作前,务必备份,避免数据丢失。
  • 选择Azure DevOps/TFS服务低峰期操作,清理过程会占用数据库资源,可能影响系统性能。

执行清理流程

  1. 运行prc_DeleteUnusedFiles
    打开SQL Server Management Studio,连接到Azure DevOps/TFS的项目集合数据库,执行:

    EXEC prc_DeleteUnusedFiles
    

    该过程会扫描所有文件引用,标记无引用的文件为待删除,耗时根据数据库大小而定。

  2. 运行prc_CleanupDeletedFileContent
    接着执行:

    EXEC prc_CleanupDeletedFileContent
    

    该过程会清理tbl_content中已标记为删除的记录,释放数据库内部空间。

  3. 收缩数据库数据文件
    SQL Server删除记录后,会把空间标记为数据库内部可用,但不会主动还给操作系统。需要手动收缩数据文件(注意:频繁收缩会导致索引碎片,建议仅在清理后执行一次):

    DBCC SHRINKFILE ('你的数据库数据文件名', TRUNCATEONLY)
    

    可通过SELECT name FROM sys.database_files WHERE type = 0查询实际的数据文件名,替换上述语句中的占位符。

  4. 后续维护建议

    • 定期(比如每月一次)执行上述清理流程,配合你的60天工件保留策略,持续管控数据规模。
    • 清理后建议重建tbl_content和关联表的索引,修复收缩带来的碎片问题:
      ALTER INDEX ALL ON tbl_content REBUILD
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:15:07