unallocated space无法释放问题[紧急]
sql server 2008 r2
使用sp_spaceused命令发现:
unallocated space
非常大,50G中有35G是 unallocated space 这个应当怎么释放掉?
用一般的数据库和文件收缩无法释放。
谢谢!
------解决方案--------------------....那是未分配的空间。。。
------解决方案--------------------DBCC SHRINKFILE (DB_log, n)
------解决方案--------------------dbcc shrinkfile
对数据库文件和日志文件分别收缩
另外使用sp_spaceused的时候
exec sp_spaceused true 这样会更新一下统计信息
不加true你看到的可能不是最新的
------解决方案--------------------EXEC sp_spaceused @updateusage='true'
------解决方案--------------------重建一下聚集索引再收缩咯
------解决方案--------------------在频繁进行增删的表上重建索引试试
dbcc dbreindex('表名','',90)
------解决方案--------------------
------解决方案--------------------不重建索引的话可能根本收缩不了的,SQL Server管理数据库文件的级别是区,重建索引可以腾出很多空区,这样就可以收缩掉了。
如果是HEAP表的话建议重新创建表然后将数据导入到新表然后改名,否则可能无法收缩。
------解决方案--------------------重建了索引,能把数据重组。这样有可能空出某些区,由于收缩是基于区一级的操作。所以收缩起来才有意义,如果本来可以集中在一个区的数据零散分布于多个区,收缩是没有效果的。
------解决方案--------------------
------解决方案--------------------运行DBCC CHECKDB检查一下数据库
------解决方案--------------------
如果数据库有完整备份,使用备份来恢复数据库
如果没有备份使用DBCC CHECKDB
使用dbcc checkdb 的repair_rebuild参数:不丢失数据
不行的话使用repair_allow_data_loss :有可能丢失数据