社区
疑难问题
帖子详情
unallocated space无法释放问题[紧急]
ChengKing
2012-10-19 09:38:48
sql server 2008 r2
使用sp_spaceused命令发现:
unallocated space
非常大,50G中有35G是 unallocated space 这个应当怎么释放掉?
用一般的数据库和文件收缩无法释放。
谢谢!
...全文
1243
19
打赏
收藏
unallocated space无法释放问题[紧急]
sql server 2008 r2 使用sp_spaceused命令发现: unallocated space 非常大,50G中有35G是 unallocated space 这个应当怎么释放掉? 用一般的数据库和文件收缩无法释放。 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
....那是未分配的空间。。。
Linux误删文件恢复:基于ext4 inode的时间戳精准抢救
在Linux系统中,文件删除本质是
释放
inode与数据块的映射关系,而非擦除原始数据——这是ext4等日志型文件系统底层的核心原理。理解这一机制,才能突破传统恢复工具(如extundelete)对目录项的依赖局限,转而通过时间戳定位刚被注销的inode。该技术路径具备强工程实用性:无需备份、不依赖文件名、绕过易损元数据,特别适用于生产环境突发误操作场景。本文聚焦于CentOS/Ubuntu等主流发行版下的实战恢复链路,深度融合debugfs、i
cat
、dumpe2fs等内核级工具,结合ctime筛选与raw
易语言源码易语言嵌入汇编模拟按键模块源码
易语言源码易语言嵌入汇编模拟按键模块源码
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例230个Proteus仿真原理图
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例230个Proteus仿真原理图
Delphi 7 控件之AdvStringGridD7.7z
Delphi 7 控件之AdvStringGridD7.7z
Qt5 QSerialPort signal-slot serial read/write
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 在Qt框架中,QSerialPort类被视为一个关键组件,用于执行与串行端口之间的通信任务,它具备多样化的功能,涵盖了串口的开启与关闭操作,以及波特率、数据位、停止位和奇偶校验等参数的设定,同时还包括数据的发送和接收功能。在标题和描述中提及的“Qt5的QSerialPort类通过信号槽实现串口读写”,这代表了一种在Qt编程中普遍采用的事件驱动策略,借助信号槽机制,能够便捷地管理串口数据的传输与接收。 1. **QSerialPort类的基础操作**: - 初始化阶段:必须构建一个QSerialPort实例,并为其指定串口名称,例如"/dev/ttyUSB0"。 - 参数配置:利用`setPortName()`、`setBaudRate()`、`setDataBits()`、`setParity()`、`setStopBits()`、`setFlowControl()`等方法,依据具体需求对串口参数进行配置。 - 串口开启/终止:借助`open()`方法启动串口,通过`close()`方法终止串口。务必验证`isOpen()`的返回状态,以确保操作的有效性。 2. **信号槽机制的应用**: - 信号的生成:QSerialPort类中定义了若干信号,诸如`readyRead()`表明有数据可读,`error()`指示出现错误,`bytesWritten()`显示数据已传输等。当这些事件发生时,将触发相应的信号。 - 槽函数的关联:相应地,可以将这些信号与自定义的槽函数相连接,比如,当`readyRead()`信号被激活时,可以调用一个用于处理读取数据的函数。 3. **串口数据...
疑难问题
22,297
社区成员
121,728
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章