笔记36-徐 一般数据库损坏的类型有以下几个

笔记36-徐 一般数据库损坏的类型有以下几个

 

f

 

--一般数据库损坏的类型有以下几个:
--823错误:SQL向操作系统申请某个页面读写时候遇到Windows读取或写入请求失败,通常是物理文件损坏导致此错误,也可能是设备驱动程序导致,这个错误要不硬件出问题,要不数据文件发生严重损坏,错误意味着数据页里的有效数据丢失,dbcc checkdb很难修复
--
--824错误:SQL检测到页中存在逻辑错误,虽然dbcc checkdb能够修复,但是这个错误基本意味着部分数据丢失
--
--605错误:非常有名的数据库损坏错误,指定数据库中的页或分配已损坏。如果这个错误是暂时的,dbcc checkdb可以修复,如果这个错误不是暂时的,那么dbcc checkdb也很难修复
--
--8946错误:PFS页面头有损坏
--
--8966错误:系统表上的聚集索引页面上有损坏
--
--2570错误:某个字段的值不符合字段数据类型定义
--
--3854错误:元数据有损坏

--有些错误可以不丢失数据就能修复,有些要丢失数据才能修复物理层面的错误,有些即使丢失数据也没办法修复
 
 
--829错误:这个错误表明SQL Server在读取数据库文件时,发现了逻辑一致性错误,即数据页的页面ID不正确。
--表示数据库页的一致性检查失败,可能是由于硬件故障或磁盘上的物理损坏导致的。
--SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected xxx; actual xxx). It occurred during a read of page (xxx:xxx) in database ID xx at offset xxx in file 'xxx.mdf'.  Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.


 

 f

https://www.youtube.com/watch?v=hcsLnXoZ_MM

alwayson和镜像修复主库损坏的页面

主库发现IO错误,页面读取和写入期间都会发生829错误

 f

从库发现IO错误,从库马上进入suspended状态

从库redo会等损坏页面的覆盖完成,否则不会执行redo(数据库处于suspended状态),等覆盖完成并更新
suspect_page这个系统表之后,redo才会继续执行,另外要注意的是redo的lsn一定要超过
primary所发送过来的suspect页面所拥有的lsn,不然依然报错823,824或者829,最后等下次checkpoint就会把该dirty page
写入磁盘

 

 

f

 

posted @ 2013-07-27 16:07  桦仔  阅读(473)  评论(0编辑  收藏  举报