SQL2005,数据库有1.7T,可用空间50%以上,想收缩下,但执行dbcc shrinkdatabase时间太长。执行了8个多小时后报超时而失败。求好办法,谢谢。

解决方案 »

  1.   

    唯一的办法,不要一次性收缩太多,可以每次500M,循环执行,预估执行多少次就可以了,TB级别的对IO伤害非常大,而且如果你手动干预未完成的过程,可能会导致数据库不可用,后果相当严重。
      

  2.   

    如果数据库有多个文件组,可以单独用dbcc shrinkfile收缩文件..
      

  3.   

    我建议你收缩文件而不是database,这是例子,我这个苦190M,假设我每次要收缩50MUSE [AdventureWorks2012]
    GO
    DBCC SHRINKFILE (N'AdventureWorks2012_Data' , 140)
    GO
    然后复制粘贴一路减下去
    USE [AdventureWorks2012]
    GO
    DBCC SHRINKFILE (N'AdventureWorks2012_Data' , 90)
    GO
    以此类推,你也可以写动态语句,不过我觉得这些不是经常做的就没必要花时间去写了,口算都能算出来。