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

删除项目后Azure DevOps Server 2022本地集合数据库大小未缩减求助

缩减Azure DevOps Server 2022集合数据库大小的方法

删除项目后数据库体积未下降,是因为SQL Server删除数据后仅标记空间为内部可用,不会自动释放给操作系统,需要手动执行收缩操作,步骤如下:

  • 确认可用空间
    打开SQL Server Management Studio,右键目标集合数据库 → 属性 → 文件,查看「可用空间」列,确认存在未释放的闲置空间。

  • 收缩数据库
    收缩会释放闲置空间给操作系统,但可能导致索引碎片化,需后续优化:

    • 图形界面操作:右键数据库 → 任务 → 收缩 → 数据库,勾选「释放未使用的空间」,执行即可。
    • T-SQL命令执行:
      USE [你的集合数据库名称];
      GO
      DBCC SHRINKDATABASE ([你的集合数据库名称], 10); -- 10为保留的可用空间百分比,可按需调整
      GO
      
  • 重建索引与更新统计信息
    收缩操作会造成索引碎片化,影响数据库性能,需执行优化:

    • 通过Azure DevOps管理控制台:选择目标集合 → 点击「优化数据库」,勾选「重建索引」和「更新统计信息」后执行。
    • T-SQL命令执行:
      USE [你的集合数据库名称];
      GO
      -- 重建所有用户表的索引
      EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD';
      -- 更新统计信息
      UPDATE STATISTICS [你的集合数据库名称];
      GO
      
  • 排查大表残留
    若收缩后体积仍未达标,可检查是否有未清理的大表(如附件、历史记录相关表),用以下查询定位大表:

    USE [你的集合数据库名称];
    GO
    SELECT 
        t.NAME AS TableName,
        s.Name AS SchemaName,
        p.rows AS RowCounts,
        SUM(a.total_pages) * 8 AS TotalSpaceKB, 
        SUM(a.used_pages) * 8 AS UsedSpaceKB, 
        (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
    FROM 
        sys.tables t
    INNER JOIN      
        sys.indexes i ON t.OBJECT_ID = i.object_id
    INNER JOIN 
        sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
    INNER JOIN 
        sys.allocation_units a ON p.partition_id = a.container_id
    LEFT OUTER JOIN 
        sys.schemas s ON t.schema_id = s.schema_id
    WHERE 
        t.NAME NOT LIKE 'dt%' 
        AND t.is_ms_shipped = 0
        AND i.OBJECT_ID > 255 
    GROUP BY 
        t.Name, s.Name, p.Rows
    ORDER BY 
        TotalSpaceKB DESC;
    GO
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:17:10