SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 ||尝试在数据库 5 中提取逻辑页 (1:1640) 失败
use test
go
ALTER DATABASE test SET SINGLE_USER
DBCC CHECKDB (test, repair_allow_data_loss) with NO_INFOMSGS
go
ALTER DATABASE test SET MULTI_USER
go
对于单个数据库报错了,运行这个修复不行。后来我在tempdb运行才可以。
dbcc checkdb('tempdb')
其实开始的时候还有另一个错误:
尝试在数据库 5 中提取逻辑页 (1:1640) 失败。该逻辑页属于分配单元XXX ,而非 XXX。
use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态 dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态
这个没有效果,运行到一半就出错了,无计可施。无奈之下用truncate table test,然后从新插入数据。当然做这个的前提是你的数据有备份。否则从损坏的表是读不到的。
这个表修复的方法也没啥用。
use 需要修复的数据库实体的名称 declare @dbname varchar(255) set @dbname='需要修复的数据库的名称' exec sp_dboption @dbname,'single user','true' dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD) ------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称 exec sp_dboption @dbname,'single user','false'
DBCC DBREINDEX (表名,’’) 修复此表所有的索引。这个方法也没用。
DBCC CHECKALLOC
检查指定数据库的磁盘空间分配结构的一致性 。这个我水平不够,看不出什么问题。
数据库越大,修复越久。还是做好随时备份。
本人系统win10+sql2008,在装sql2008的时候系统就提示不兼容,但是可以安装成功并且运行,不清楚是什么原因导致的。希望有高手可以解答。以前在win7没有遇见过这种问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!