zoukankan      html  css  js  c++  java
  • 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没有遇见过这种问题。

  • 相关阅读:
    在rhel6上安装Python 2.7和Python 3.3
    RHEL7 -- Linux搭建FTP虚拟用户
    RHCE7 -- IPv6
    RHEL7 -- nmcli的使用
    设置Adobe Reader打开PDF文件保持记忆功能
    iptalbes -F
    服务器IP地址后修改SQL Server配置
    配置SELINUX
    11G新特性 -- 分区表和增量统计信息
    11G新特性 -- Statistics Preferences
  • 原文地址:https://www.cnblogs.com/cvol/p/5799679.html
Copyright © 2011-2022 走看看