从SQL SERVER 2000 上迁移了一个数据库到SQL SERVER 2008 R2上,暂且用DataBaseName代替迁移的真实的数据库名(后面的资料也会将数据库真实的名字用DataBaseName代替),迁移过程中也没有啥问题,配置了YourDataBase,作业“YourSQLDba_FullBackups_And_Maintenance”每天凌晨12点整运行,结果第一天晚上YourDatabase将数据库DataBaseName置于紧急模式,检查错误日志情况如下:

错误现象:

YourSQLDba对数据库做一致性检查时,发现有错误,所以它将该数据库置于紧急模式,具体内容如下所

查看YourSQLDba的具体错误日志信息

单击Action字段,看到的内容如下(太多内容,部分省略)

错误日志具体内容
  1. <Exec>
  2. <ctx>yMaint.IntegrityTesting</ctx>
  3. <cmd>DBCC checkDb('DataBaseName')</cmd>
  4. <err>Error 2508, Severity 16, level 3 : The In-row data RSVD page count for object "bMaterialIn79", index ID 0, partition ID 4563097419776, alloc unit ID 4563097419776(type In-row data) is incorrect. Run DBCC UPDATEUSAGE.</err>
  5. <err>Error 2508, Severity 16, level 3 : The In-row data RSVD page count for object "bMaterialIn93", index ID 0, partition ID 70442742317056, alloc unit ID 70442742317056(type In-row data) is incorrect. Run DBCC UPDATEUSAGE.</err>
  6. <msg>DBCC results for 'LibraryMS'.</msg>
  7. <msg>Service Broker Msg 9675, State 1: Message Types analyzed: 14.</msg>
  8. <msg>Service Broker Msg 9676, State 1: Service Contracts analyzed: 6.</msg>
  9. <msg>Service Broker Msg 9667, State 1: Services analyzed: 3.</msg>
  10. <msg>Service Broker Msg 9668, State 1: Service Queues analyzed: 3.</msg>
  11. <msg>Service Broker Msg 9669, State 1: Conversation Endpoints analyzed: 0.</msg>
  12. <msg>Service Broker Msg 9674, State 1: Conversation Groups analyzed: 0.</msg>
  13. <msg>Service Broker Msg 9670, State 1: Remote Service Bindings analyzed: 0.</msg>
  14. <msg>Service Broker Msg 9605, State 1: Conversation Priorities analyzed: 0.</msg>
  15. <msg>DBCC results for 'sys.sysrscols'.</msg>
  16. <msg>There are 6701 rows in 63 pages for object "sys.sysrscols".</msg>
  17. <msg>DBCC results for 'sys.sysrowsets'.</msg>
  18. <msg>There are 819 rows in 12 pages for object "sys.sysrowsets".</msg>
  19. <msg>DBCC results for 'sys.sysallocunits'.</msg>
  20. <msg>There are 848 rows in 17 pages for object "sys.sysallocunits".</msg>
  21. .................................................................................
  22. .................................................................................
  23. <msg>DBCC results for 'bMaterialIn79'.</msg>
  24. <msg>There are 1346 rows in 18 pages for object "bMaterialIn79".</msg>
  25. <msg>CHECKDB found 0 allocation errors and 1 consistency errors in table 'bMaterialIn79'(object ID 69627341).</msg>
  26. ...............................................................................
  27. ...............................................................................
  28. <msg>DBCC results for 'bMaterialIn93'.</msg>
  29. <msg>There are 2162 rows in 23 pages for object "bMaterialIn93".</msg>
  30. <msg>CHECKDB found 0 allocation errors and 1 consistency errors in table 'bMaterialIn93'(object ID 1074870946).</msg>
  31. <msg>CHECKDB found 0 allocation errors and 2 consistency errors in database 'DataBaseName'.</msg>
  32. <msg>DBCC execution completed. If DBCC printed error messages, contact your system administrator.</msg>
  33. </Exec>

对数据库执行DBCC  CHECKDB('DataBaseName')得到的内容跟YourSQLDba的错误日志信息一致

DCC CHECKDB
  1. DBCC results for 'DataBaseName'.
  2. Service Broker Msg 9675, State 1: Message Types analyzed: 14.
  3. Service Broker Msg 9676, State 1: Service Contracts analyzed: 6.
  4. Service Broker Msg 9667, State 1: Services analyzed: 3.
  5. Service Broker Msg 9668, State 1: Service Queues analyzed: 3.
  6. Service Broker Msg 9669, State 1: Conversation Endpoints analyzed: 0.
  7. Service Broker Msg 9674, State 1: Conversation Groups analyzed: 0.
  8. Service Broker Msg 9670, State 1: Remote Service Bindings analyzed: 0.
  9. Service Broker Msg 9605, State 1: Conversation Priorities analyzed: 0.
  10. DBCC results for 'sys.sysrscols'.
  11. There are 6701 rows in 63 pages for object "sys.sysrscols".
  12. DBCC results for 'sys.sysrowsets'.
  13. There are 819 rows in 12 pages for object "sys.sysrowsets".
  14. ...................................................................
  15. ..................................................................
  16. DBCC results for 'bMaterialIn79'.
  17. Msg 2508, Level 16, State 3, Line 1
  18. The In-row data RSVD page count for object "bMaterialIn79", index ID 0, partition ID 4563097419776, alloc unit ID 4563097419776(type In-row data) is incorrect. Run DBCC UPDATEUSAGE.
  19. There are 1346 rows in 18 pages for object "bMaterialIn79".
  20. CHECKDB found 0 allocation errors and 1 consistency errors in table 'bMaterialIn79'(object ID 69627341).
  21. .....................................................................
  22. .....................................................................
  23. The In-row data RSVD page count for object "bMaterialIn93", index ID 0, partition ID 70442742317056, alloc unit ID 70442742317056(type In-row data) is incorrect. Run DBCC UPDATEUSAGE.
  24. There are 2162 rows in 23 pages for object "bMaterialIn93".
  25. CHECKDB found 0 allocation errors and 1 consistency errors in table 'bMaterialIn93'(object ID 1074870946).
  26. DBCC results for 'bMaterialApply40'.
  27. ....................................................................
  28. ....................................................................
  29. CHECKDB found 0 allocation errors and 2 consistency errors in database 'DataBaseName'.
  30. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

分析原因:

这些错误提示数据页在保留空间中不正确的值,在SQL 2000中,这些错误也有可能是数据条目或者数据页的数目跟索引或表中记录的不一致所导致的。CheckDB 不会修复类似错误,在SQL 2005 中CheckDB只会给出一个警告信息。这不是什么严重的错误,按照提示运行DBCC UPDATEUSAGE行了,这通常发生在SQL 2000升级为2005/2008后,在SQL 2005/2008中一般不会遇到。刚好我这个数据库DataBaseName是从SQL 2000升级到SQL 2008,其实这确实不是一个什么严重错误,但是YourSQLDba意识到了“严重性”将数据库出于紧急模式,不能让系统或用户继续操作该数据库了,那么接下来用DBCC UPDATEUSAGE 解决该问题。

Code Snippet
  1. DBCC UPDATEUSAGE(LibraryMS,"dbo.bMaterialIn79");
  2. GO
  3. DBCC UPDATEUSAGE: Usage counts updated for table 'bMaterialIn79'(index 'bMaterialIn79', partition 1):
  4. USED pages(In-row Data): changed from (21) to (19) pages.
  5. RSVD pages(In-row Data): changed from (-107) to (73) pages.
  6. DBCC UPDATEUSAGE: Usage counts updated for table 'bMaterialIn79'(index 'PK_bMaterialIn79', partition 1):
  7. RSVD pages(In-row Data): changed from (8) to (17) pages.
  8. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
  9. DBCC UPDATEUSAGE(LibraryMS,"dbo.bMaterialIn93");
  10. GO
  11. DBCC UPDATEUSAGE: Usage counts updated for table 'bMaterialIn93'(index 'bMaterialIn93', partition 1):
  12. USED pages(In-row Data): changed from (38) to (24) pages.
  13. RSVD pages(In-row Data): changed from (-18) to (49) pages.
  14. DBCC UPDATEUSAGE: Usage counts updated for table 'bMaterialIn93'(index 'PK_bMaterialIn93', partition 1):
  15. RSVD pages(In-row Data): changed from (16) to (17) pages.
  16. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

关于DBCC UPDATEUSAGE的MSDN解释如下:

-----------------------------------------------------------------------------------------------------------------------

备注

DBCC UPDATEUSAGE 将针对表或索引中的每个分区更正行、已用页、保留页、叶级页和数据页的计数。如果系统表中没有错误,则 DBCC UPDATEUSAGE 不返回数据。如果发现错误,并对其进行更正,同时没有使用 WITH NO_INFOMSGS,DBCC UPDATEUSAGE 将返回系统表中更新的行和列。

使用 DBCC UPDATEUSAGE 同步空间使用计数器。因为 DBCC UPDATEUSAGE 在大型表或大型数据库中运行可能会需要一些时间,所以通常只在怀疑 sp_spaceused 返回的值不正确时使用。sp_spaceused 在返回表或索引的空间信息之前接受可选参数以运行 DBCC UPDATEUSAGE。

升级数据库

在 SQL Server 的早期版本中,用于表和索引行计数以及页计数的值可能不正确。根据 SQL Server 2005 之前的版本创建的数据库可能包含错误的计数。因此,我们建议在升级之后运行 DBCC UPDATEUSAGE,以便更正所有的无效计数。

DBCC CHECKDB 已得到增强,可以检测页计数或行计数变为负值的情况。检测到上述问题后,DBCC CHECKDB 的输出会包含一个警告和一个建议,建议运行 DBCC UPDATEUSAGE 解决该问题。

------------------------------------------------------------------------------------------------------------------------

YourSQLDba将数据库置于紧急模式的原因浅析的更多相关文章

  1. SQLSERVER数据库置疑、可疑、脱机、单用户、紧急模式等的修复

    数据库出现置疑.可疑.脱机.单用户.紧急模式主要是因为数据库的日志文件除了问题,2000和2008修复方式不一样,2008的修复脚本在2000中不适用,主要是不被2000识别. 假设数据库名为:eis ...

  2. SQL Server 数据库单用户模式处理

    在还原数据库bak备份文件时,由于某种原因(具体何种原因在此不进行分析)导致数据库还原后处于单用户模式,如下图: 单个用户模式导致,数据库无法打开,只能通过脚本去查询数据库内的表,然后进行查询数据,极 ...

  3. 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型

    Data base: 长期存储在计算机内,有组织的,可共享的大量数据集合.基本特征:永久存储,可共享,有一定的物理和逻辑结构. Data base manage system(DBMS):用户和os之 ...

  4. oracle数据库的归档模式

    1:开发环境和测试环境中,数据库的日志模式和自动归档模式一般都是不设置的,这样有利于系统应用的调整,也免的生成大量的归档日志文件将磁盘空间大量的消耗. 2:生产环境时,将其设置为日志模式并自动归档就相 ...

  5. 修改oracle数据库为归档模式

    参考博客:http://blog.csdn.net/codesaint/article/details/1901030 Oracle分为非归档模式(NOARCHIVELOG)  和归档模式(ARCHI ...

  6. 救援模式(Rescue Mode)、单用户模式(Single-User Mode)、紧急模式(Emergency Mode)的区别与联系

    前天聚餐的时候一航和启飞学长讲到RUCTF中更改root密码要进入单用户模式,我插了一句"有的系统显示的是救援模式",说完后心里一直很虚...(技术上的事还是想好再说)今天查了一下 ...

  7. SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

    SQL Server数据库有三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式: 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate ...

  8. Oracle数据库LOGGING&NOLOGGING模式概述

    1.日志记录模式(LOGGING .FORCE LOGGING .NOLOGGING) 1.1三者的含义 LOGGING:当创建一个数据库对象时将记录日志信息到联机重做日志文件.LOGGING实际上是 ...

  9. 进入CentOS7紧急模式恢复root密码

    第一步.重启CentOS7,在以下界面选择要编辑的内核(一般第一个),按e进入编辑界面 第二步.在编辑界面找到如下一行,将ro改为rw init=/sysroot/bin/sh.改完后<Ctrl ...

随机推荐

  1. 记录下帮助一位网友解决的关于android子控件的onTouch或onClick和父OnTouch 冲突的问题。

    前三天收到位网友的私信求助,问题大概如标题所示.具体是下面的情况,个人感觉,这个问题挺有趣,也会在实际项目开发中很常见.不想看前奏的请直接跳至解决方法. 问题原型: 父控件是自定义的 LinearLa ...

  2. 相克军_Oracle体系_随堂笔记012-undo

    undo表空间中undo段是自动生成的,oracle自动使用undo表空间的undo段. 作为高级DBA,需要了解Oracle是如何使用undo段的.这样出了性能问题才能够解决.   1.Undo表空 ...

  3. HTML 网页特效CSS大全

    css属性代码大全一CSS文字属性:color : #999999; /* 文字颜色*/font-family : 宋体,sans-serif; /* 文字字体*/font-size : 9pt; / ...

  4. 为Linux重新开发MVC,有图有真相

    1.写在前面 就连我们自己开始时也在问自己:我们为什么要开发一套MVC,微软的难道不可用用吗? 一开始的理由很简单.为了更好地跨平台部署;在Linux部署过.NET的人们应该知道, 部署起来是有点繁琐 ...

  5. 轻松理解AOP思想(面向切面编程)

    本文旨在帮助还没有理解AOP的童鞋看透弄懂AOP,也欢迎高手批评指正. 先说一个Spring是什么吧,大家都是它是一个框架,但框架这个词对新手有点抽象,以致于越解释越模糊,不过它确实是个框架的,但那是 ...

  6. Nancy之Cache的简单使用

    一.前言 说起缓存,或许大家都不陌生,甚至是天天都在用!当然缓存也被分的越来越细,页面缓存.数据缓存.文件缓存等等. 其实呢,我个人觉得,主要还是两大类:数据的缓存和页面的缓存.数据缓存的话就包括所有 ...

  7. 实用的CSS3属性和使用技巧

    CSS可以改进网站的设计并且开拓网站设计更多的可能性,可以令你的网页更具吸引力.对于前端开发者.网站设计师来说,掌握并熟练应用CSS是一项必不可少的技能. 下面列出了一些非常实用的CSS3属性和使用技 ...

  8. jQuery模拟打字逐字输出代码

    效果查看:http://hovertree.com/texiao/jquery/70/ jQuery键盘打出逐字逐句显示特效,逐字逐句显示文字 还可以设置每个文字随机颜色: http://hovert ...

  9. 谈一谈.net析构函数对垃圾回收的影响

    之前忘了说了 代码都是在Release模式下运行的,现在补充上. 这里说析构函数,其实并不准确,应该叫Finalize函数,Finalize函数形式上和c++的析构函数很像 ,都是(~ClassNam ...

  10. 使用 Visual Studio Online 进行协同开发

    Visual Studio Online(原来的 Team Foundation Service),是项目数据在云中的主页.在我们的云基础架构中只需数分钟便可启动并运行,无需安装或配置任何服务器.设置 ...