日期:2014-05-18  浏览次数:20511 次

在线求救:如何收缩数据库中未使用的空间
我的数据库现在已经达到16个G了,造成硬盘都已经装不下了.而用查询表占空间发现实际有12个多G的空间并未使用,求救高手如何把这些空间给回收了
如图数据库空间占用查询结果:
reserved           data             index_size         unused
15655768KB       2646240kB     44656KB             12964872KB
表占用空间查询结果:
nameinfo                   rowsinfo     reserved       datainfo           index_size         unused        
jxc_qtxs2007061935091942712   KB247048   KB32   KB1695632   KB
jxc_qtxs2007051920461939568   KB256480   KB24   KB1683064   KB
jxc_qtxs2007011981121863640   KB236008   KB8   KB1627624   KB
jxc_qtxs2007022056381738808   KB227224   KB16   KB1511568   KB
jxc_qtxs2007041810691691704   KB227048   KB16   KB1464640   KB
jxc_qtxs2007081267701656992   KB209104   KB32   KB1447856   KB
sys_xtrz27818585800   KB73288   KB32   KB512480   KB
js_jhdt20490413376   KB52232   KB32   KB361112   KB
jxc_qtxs_ys65937409144   KB54200   KB32   KB354912   KB
jxc_jhdt20078742316200   KB39512   KB304   KB276384   KB
jxc_wsdl61568284816   KB37832   KB3312   KB243672   KB
jxc_yfzk20078609260712   KB32704   KB32   KB227976   KB


------解决方案--------------------
--截断日志
DUMP TRANSACTION DBName WITH NO_LOG

--收缩当前数据库日志文件,如果空间压力过大,可以先收缩日志,这个很快。
DBCC SHRINKFILE (2, 0) WITH NO_INFOMSGS

--收缩数据库
DBCC SHRINKDATABASE (N 'DBName ', 0) WITH NO_INFOMSGS

------解决方案--------------------
Try:
---收缩数据库到10%的可用空间
Use Test
DBCC ShrinkDatabase(Test,10)
---首先截断事务日志,然后再收缩日志文件
Use Test
BackUp Log Test With Truncate_Only
DBCC ShrinkFile(Test,1) ---注意这里单位为M

---LZ,你视自己的情况而定,最好先完全备份一次再进行收缩
------解决方案--------------------
假如你的数据库叫 emes

use emes
DUMP TRANSACTION emes WITH NO_LOG
dbcc shrinkdatabase(N 'emes ')
alter database emes set recovery simple