zoukankan      html  css  js  c++  java
  • 数据库出现“提取逻辑页失败”

    出现怪异现象,一张表只能查询,不能写入、更新。查看应用程序,发现原来数据逻辑页出现问题。具体的错误日志如下:

    事件类型:    错误
    事件来源:    MSSQLSERVER
    事件种类:    (2)
    事件 ID:    605
    日期:        2009-5-23
    事件:        17:04:24
    用户:        N/A
    计算机:    BMCSQ2
    描述:
    尝试在数据库 11 中提取逻辑页 (1:2025336) 失败。该逻辑页属于分配单元 72057594055098368,而非 72057594057457664。

    有关

    更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。

    解决方案:

    首先,找到出问题的数据表,运行以下查询,确定与消息中指定的分配单元相关联的表。用错误消息中说明的分配单元替换 allocation_unit_id

    USE dbName;
    GO
    SELECT au.allocation_unit_id, OBJECT_NAME(p.object_id) AS table_name, fg.name AS filegroup_name,
    au.type_desc AS allocation_type, au.data_pages, partition_number
    FROM sys.allocation_units AS au
    JOIN sys.partitions AS p ON au.container_id = p.partition_id
    JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id
    WHERE au.allocation_unit_id = 72057594055098368 OR au.allocation_unit_id = 72057594055098368
    ORDER BY au.allocation_unit_id;
    GO

    具体的可参照微软官方:http://msdn.microsoft.com/zh-cn/library/aa337419.aspx

    接着,将之前的表重建,存储过程、触发器、索引都要建的,然后再导入数据。这个导入数据比较简单,直接,

    insert into new(field1,field2,field3select field1,field2,field3 from old

    尽管这样处理之后,恢复正常使用,但是应用程序依然爆出这个bug.也没有找到更好的解决方案,如果有哪位高手知道解决方案,请留言,谢谢

    下面是检查数据库、数据表的结果

    DBCC CHECK

    消息 
    8967,级别 16,状态 218,第 1 行
    DBCC 中出现内部错误,无法继续处理。请与客户支持服务部门联系。
    消息 
    7985,级别 16,状态 2,第 1 行
    系统表预检查: 对象 ID 
    4。无法使用闩锁类型 SH 读取并闩锁页 (1:1880513)。由于不可修复的错误,CHECK 语句已终止。
    dbName的 
    DBCC 结果。
    消息 
    8944,级别 16,状态 12,第 1 行
    表错误: 对象 ID 
    0,索引 ID -1,分区 ID 0,分配单元 ID 262144 (类型为 Unknown),页 (1:1880513),行 56。测试

    (ColumnOffsets 
    <= (nextRec - pRec))失败。值为 34 和 17
    CHECKDB 发现有 
    0 个分配错误和 1 个一致性错误与任何单个的对象都没有关联。
    CHECKDB 在数据库 
    'dbName' 中发现 0 个分配错误和 1 个一致性错误。
    对于由 
    DBCC CHECKDB (dbName)发现的错误,repair_allow_data_loss 是最低的修复级别。
    USE dbName;
    GO
    DBCC CHECKTABLE ("dbo.T_TLMail_Receiver");
    GO

    消息 
    8967,级别 16,状态 218,第 1 行
    DBCC 中出现内部错误,无法继续处理。请与客户支持服务部门联系。
    消息 
    8944,级别 16,状态 12,第 1 行
    表错误: 对象 ID 
    0,索引 ID -1,分区 ID 0,分配单元 ID 262144 (类型为 Unknown),页 (1:1880513),行 56。测试

    (ColumnOffsets 
    <= (nextRec - pRec))失败。值为 34 和 17
    消息 
    7985,级别 16,状态 2,第 1 行
    系统表预检查: 对象 ID 
    4。无法使用闩锁类型 SH 读取并闩锁页 (1:1880513)。由于不可修复的错误,CHECK 语句已终止。

    http://msdn.microsoft.com/zh-cn/library/ms174338.aspx

  • 相关阅读:
    cesium学习——cesium中的坐标
    webService框架CXF的简单使用
    使用cesium中的scene.open中遇到的几个问题
    通过Spring读取properties配置文件
    常用的Ant风格书写
    oracle小知识点
    虚拟机centos7系统下安装hadoop ha和yarn ha(详细)
    java 注解
    Guava Immutable 不可变集合
    Guava BiMap
  • 原文地址:https://www.cnblogs.com/yank/p/1487779.html
Copyright © 2011-2022 走看看