社区
疑难问题
帖子详情
unallocated space无法释放问题[紧急]
ChengKing
2012-10-19 09:38:48
sql server 2008 r2
使用sp_spaceused命令发现:
unallocated space
非常大,50G中有35G是 unallocated space 这个应当怎么释放掉?
用一般的数据库和文件收缩无法释放。
谢谢!
...全文
1161
19
打赏
收藏
unallocated space无法释放问题[紧急]
sql server 2008 r2 使用sp_spaceused命令发现: unallocated space 非常大,50G中有35G是 unallocated space 这个应当怎么释放掉? 用一般的数据库和文件收缩无法释放。 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SQL77
2012-10-22
打赏
举报
回复
[Quote=引用 17 楼 的回复:]
已经解决了此问题。 原因是数据文件 中有一个page坏掉了,通过pageid查询不到这个页的所属(table/index etc),这个页是一个死页。
把数据全部导到新库(根据pageid得不到是哪个对象的数据,所以只能全导了),不受那个坏页的限制了,这样解决就好。
shrinkfile执行过程中出错是因为这个操作试图移动extent时报错,而extend中包含那个坏页。导数据的方式是……
[/Quote]
GX。。。
所以一般都要定期DBCC CHECKDB()进行检查。如果有出错。可进行适当修复。
ChengKing
2012-10-22
打赏
举报
回复
已经解决了此问题。 原因是数据文件 中有一个page坏掉了,通过pageid查询不到这个页的所属(table/index etc),这个页是一个死页。
把数据全部导到新库(根据pageid得不到是哪个对象的数据,所以只能全导了),不受那个坏页的限制了,这样解决就好。
shrinkfile执行过程中出错是因为这个操作试图移动extent时报错,而extend中包含那个坏页。导数据的方式是复制,而不是移动所以不会出错。
lyhabc桦仔
2012-10-20
打赏
举报
回复
如果数据库有完整备份,使用备份来恢复数据库
如果没有备份使用DBCC CHECKDB
使用dbcc checkdb 的repair_rebuild参数:不丢失数据
不行的话使用repair_allow_data_loss :有可能丢失数据
lyhabc桦仔
2012-10-20
打赏
举报
回复
运行DBCC CHECKDB检查一下数据库
ChengKing
2012-10-20
打赏
举报
回复
在使用中 unesed空间一般比 unallocated 空间难 回收,要涉及到对表进行聚焦索引整理。 但这里问题比较奇怪,在SHRINKFILE执行过程中又出现一个下面错误:
---------------------------------------------------------------------------
DBCC SHRINKFILE: 无法移动页1:5362183,因为该页所属的分区已删除。
(1 行受影响)
DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。
(1 行受影响)
DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。
---------------------------------------------------------------
运行了几秒钟就提示如上错误。根据 我现在的分析怀疑很可能是 文件损坏导致错误了。 这个页所在分区找不到,致后面的所有 分区称动都没有执行。 导致这个移动事务失败。
汤姆克鲁斯
2012-10-19
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
Reserved下面的unused可以通过重建聚焦索引解决,但对unallocated space没有用。这些方法都试过了。
现在想释放掉:unallocated space,还有没有好的办法?
[/Quote]
整理完索引碎片了吗
写个循环多次运行DBCC SHRINKFILE
declare @i int=1
while @i<500
begin
DBCC SHRINKFILE(1,100)
DBCC SHRINKFILE(2,0)
set @i=@i+1
waitfor delay '00:00:10'
end
發糞塗牆
2012-10-19
打赏
举报
回复
重建了索引,能把数据重组。这样有可能空出某些区,由于收缩是基于区一级的操作。所以收缩起来才有意义,如果本来可以集中在一个区的数据零散分布于多个区,收缩是没有效果的。
KevinLiu
2012-10-19
打赏
举报
回复
你指定收缩的TARGET了吗?
ChengKing
2012-10-19
打赏
举报
回复
Reserved下面的unused可以通过重建聚焦索引解决,但对unallocated space没有用。这些方法都试过了。
现在想释放掉:unallocated space,还有没有好的办法?
KevinLiu
2012-10-19
打赏
举报
回复
不重建索引的话可能根本收缩不了的,SQL Server管理数据库文件的级别是区,重建索引可以腾出很多空区,这样就可以收缩掉了。
如果是HEAP表的话建议重新创建表然后将数据导入到新表然后改名,否则可能无法收缩。
汤姆克鲁斯
2012-10-19
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
重建一下聚集索引再收缩咯
[/Quote]
应该是先收缩,在重建索引吧,收缩之后会产生索引碎片的
百年树人
2012-10-19
打赏
举报
回复
在频繁进行增删的表上重建索引试试
dbcc dbreindex('表名','',90)
發糞塗牆
2012-10-19
打赏
举报
回复
重建一下聚集索引再收缩咯
汤姆克鲁斯
2012-10-19
打赏
举报
回复
EXEC sp_spaceused @updateusage='true'
汤姆克鲁斯
2012-10-19
打赏
举报
回复
dbcc shrinkfile
对数据库文件和日志文件分别收缩
另外使用sp_spaceused的时候
exec sp_spaceused true 这样会更新一下统计信息
不加true你看到的可能不是最新的
ChengKing
2012-10-19
打赏
举报
回复
sql server 2008 r2
使用sp_spaceused命令发现:
unallocated space
非常大,50G中有35G是 unallocated space 这个应当怎么释放掉?
[分配的保留空间只占25%左右,但未分配空间太大了,怎么释放掉]
用一般的数据库和文件收缩无法释放。
比较急,各位有没有好的办法
--------------------------------------------------------------------------------
xuam
2012-10-19
打赏
举报
回复
DBCC SHRINKFILE (DB_log, n)
极品老土豆
2012-10-19
打赏
举报
回复
....那是未分配的空间。。。
SQL Server 如何回收
unallo
cat
ed
space
Unallo
cat
ed
space
是未保留供数据库对象使用的数据库空间. 它和unus
ed
space
的区别是, unus
ed
space
已经被数据库对象(例如表和索引)保留了,只是数据增长还不够快,暂时没有用到.
unallo
cat
ed
space
是完全没有被数据库对象保留,大白话是数据库对象对它没有兴趣. DBA如果遇到disk capacity problem (磁盘容量不足
问题
),在这种情况下需要回收大量的
unallo
cat
ed
给磁盘. 当然这个
unallo
cat
ed
space
的量要大,不然也没有回收的意义. 提外话,如果能够花钱扩展磁盘,何必去动数据库呢 :)
linux下硬盘拓展
需要安装word的oneNote才能打开,自己当初集群硬盘不够,然后自己查找资料整理出来,算是宝贵的经验
数据库监测指标.pdf
数据库监测指标.pdf
动态调整c盘E盘大小 合并 拆分 分区 不丢失数据 不用移动数据
wxp上的魔法分区工具在win7不能用,win7上使用另外一个工具
Purify实战(1)
介绍purify工具的使用 很多的程序设计都是以一个Hello world来入门。方便起见,我也用一个Hello world来开始我的测试旅程。
疑难问题
22,300
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章