今天遇到了一个关于数据库一致性错误的案例。海外工厂的一台SQL Server 2005(9.00.5069.00 Standard Edition)数据库在做DBCC CHECKDB的时候出现了一致性错误,下面总结一下处理过程。具体的一致性错误信息如下所示:

Msg 8992, Level 16, State 1, Line 1

Check Catalog Msg 3853, State 1: Attribute (referenced_major_id=248841561,referenced_minor_id=6) of row (class=0,object_id=440842245,column_id=0,referenced_major_id=248841561,referenced_minor_id=6) in sys.sql_dependencies does not have a matching row (object_id=248841561,column_id=6) in sys.columns.

Msg 8992, Level 16, State 1, Line 1

Check Catalog Msg 3853, State 1: Attribute (referenced_major_id=264841618,referenced_minor_id=7) of row (class=0,object_id=440842245,column_id=0,referenced_major_id=264841618,referenced_minor_id=7) in sys.sql_dependencies does not have a matching row (object_id=264841618,column_id=7) in sys.columns.

CHECKDB found 0 allocation errors and 2 consistency errors not associated with any single object.

DBCC results for 'sys.sysrowsetcolumns'.

Msg 2508, Level 16, State 1, Line 1

The In-row data USED page count for object "GRNPGDetail", index ID 0, partition ID 60321137623040, alloc unit ID 60321137623040 (type In-row data) is incorrect. Run DBCC UPDATEUSAGE.

关于第三个一致性错误,我之前多篇博客都介绍过这种类型的一致性错误,需要使用DBCC UPDATEUSAGE,该命令可以针对表或索引中的每个分区更正行、已用页、保留页、叶级页和数据页的计数。DBCC UPDATEUSAGE命令报告目录视图中的页数和行数错误并进行更正。这些错误可能导致sp_spaceused 系统存储过程返回不正确的空间使用报告。此处略过。

下面我们来看看下面这个一致性错误,从类型上,是属于元数据损坏(metadata corruption)。但是这个案例呢,又有点特别,跟我之前遇到SQL Server元数据损坏(metadata corruption)修复案例不同,我们先来看看分析过程

首先,通过object_id找到这三个对象,然后我们通过错误信息,可以判断sys.sql_dependencies里面引用的对象,发现在sys.columns里面不存在这行记录(object_id=248841561,column_id=6;object_id=264841618,column_id=7 ), 如下截图所示,确实没有找到(object_id=248841561,column_id=6;object_id=264841618,column_id=7 )的记录。

Msg 8992, Level 16, State 1, Line 1

Check Catalog Msg 3853, State 1: Attribute (referenced_major_id=248841561,referenced_minor_id=6) of row (class=0,object_id=440842245,column_id=0,referenced_major_id=248841561,referenced_minor_id=6) in sys.sql_dependencies does not have a matching row (object_id=248841561,column_id=6) in sys.columns.

然后分析存储过程“zzzPrcUnallocationAgingSM_not used”(其实看这个存储过程命名,就知道这个存储过程废弃了,我们有些开发人员喜欢这样将一个存储过程标记为废弃了),研究分析发现,代码里面视图VW_SMAllocatedQty有个字段FactoryPoNo,而实际上,视图已经没有了这个字段,所以才会报这个一致性错误,只要注释掉这一行或删除这个存储过程,问题就解决了,DBCC CHEKDB检查,就会发现不存在一致性错误了。

SQL Server一致性错误修复案例总结的更多相关文章

  1. SQL SERVER 9003错误解决方法 只适用于SQL2000

    SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...

  2. Microsoft SQL Server 数据库 错误号大全

    panchzh :Microsoft SQL Server 数据库 错误号大全0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒 ...

  3. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...

  4. SQL Server的“错误:9004”

    客户的一台现场采集电脑崩溃,无法启动.用PE引导后,将MDF和LDF数据复制出来,往正常的数据库附加时,报如下错误: 处理数据库 'databasename' 的日志时出错.如果可能,请从备份还原.如 ...

  5. SQL Server出现错误: 4014

    SQL Server出现错误: 4014 线下的测试机器老是报错,从errorlog里看到大量的4014错误 A fatal error occurred , output error: ). 错误: ...

  6. Cannot set a credential for principal 'sa'. (Microsoft SQL Server,错误: 15535)

    在SQL SERVER 2008上上禁用sa登录时,遇到下面错误:"Cannot set a credential for principal 'sa'. (Microsoft SQL Se ...

  7. 无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法

    无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问.)” (Microsoft SQL Server,错误: 5120)的解决方法   问题描述: 在附加数据库到sql server时,附 ...

  8. 无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器。 (Microsoft SQL Server,错误: 20582)

    无法删除服务器 'old_server_name',因为该服务器用作复制过程中的发布服务器. (Microsoft SQL Server,错误: 20582) 2013-01-05 15:02 478 ...

  9. Sql Server 相关错误问题及解决方法

    1.首当其冲是登陆问题, SQL Server 2008选择Windows身份验证无法登录 (Microsoft Sql Server,错误:18456) 就是在连接SQL Server 2008时, ...

随机推荐

  1. java中如何从一行数据中读取数据

    目录 @(如何从一行数据中切割数据) 例如我要从一行学生信息中分割出学号.姓名.年龄.学历等等 ==主要使用split方法,split方法在API中定义如下:== public String[] sp ...

  2. Java并发——CAS

    什么是CAS? CAS是Compare And Swap的简称.在Java中有很多实现,比如compareAndSwapObject()方法,或者compareAndSwapInt()方法等.多用在包 ...

  3. ArcGIS API For Javascript_4.8-渲染器Renderer

    渲染器:Renderer 类:esri / renderers / Renderer 继承: Renderer->Accessor 子类: ClassBreaksRenderer , Heatm ...

  4. vivo4.0系统怎么不ROOT激活Xposed框架的教程

    在越来越多应用室的引流,或业务操作中,大多数需要使用安卓的强大Xposed框架,前几天,我们应用室采购了一批新的vivo4.0系统,大多数都是基于7.0以上系统,大多数不能够刷入Root的su权限,即 ...

  5. SpringBoot1

    内容:  

  6. 一张图看懂 SQL 的各种 join 用法

    下图展示了 LEFT JOIN.RIGHT JOIN.INNER JOIN.OUTER JOIN 相关的 7 种用法.   具体分解如下: 1.INNER JOIN(内连接)     2.LEFT J ...

  7. MySQL 查询出的时间相差几个小时

    最近做的一个springboot2.0项目. 前提是我的服务器时区没有问题: [root@wangbo ~]# date -R Mon, 22 Apr 2019 19:24:33 +0800 可以参考 ...

  8. 为什么不要使用 async void?

    问题 在使用 Abp 框架的后台作业时,当后台作业抛出异常,会导致整个程序崩溃.在 Abp 框架的底层执行后台作业的时候,有 try/catch 语句块用来捕获后台任务执行时的异常,但是在这里没有生效 ...

  9. SQL Server常用函数使用方法(学习)

    1.转载至 https://www.cnblogs.com/Brambling/p/6779434.html Substring()函数,用于截取字符串方法,三个参数 参数1:用于指定要操作的字符串 ...

  10. Java分布式锁,搞懂分布式锁实现看这篇文章就对了

    随着微处理机技术的发展,人们只需花几百美元就能买到一个CPU芯片,这个芯片每秒钟执行的指令比80年代最大的大型机的处理机每秒钟所执行的指令还多.如果你愿意付出两倍的价钱,将得到同样的CPU,但它却以更 ...