日期:2014-05-17  浏览次数:20641 次

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

------解决方案--------------------
唯一的办法,不要一次性收缩太多,可以每次500M,循环执行,预估执行多少次就可以了,TB级别的对IO伤害非常大,而且如果你手动干预未完成的过程,可能会导致数据库不可用,后果相当严重。
------解决方案--------------------
1.首先,你应该备份数据库.以防万一.
2.你可以检查一下是否是日志占用空间太大,如果日志没有作用的话,可压缩或清除之.
3.采用楼上所说分批收缩的办法.
------解决方案--------------------
同求“每次收缩500M的语句”.
------解决方案--------------------
如果数据库有多个文件组,可以单独用dbcc shrinkfile收缩文件..
------解决方案--------------------
我建议你收缩文件而不是database,这是例子,我这个苦190M,假设我每次要收缩50M

USE [AdventureWorks2012]
GO
DBCC SHRINKFILE (N'AdventureWorks2012_Data' , 140)
GO
然后复制粘贴一路减下去
USE [AdventureWorks2012]
GO
DBCC SHRINKFILE (N'AdventureWorks2012_Data' , 90)
GO
以此类推,你也可以写动态语句,不过我觉得这些不是经常做的就没必要花时间去写了,口算都能算出来。