在线求救:如何收缩数据库中未使用的空间
我的数据库现在已经达到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