前几天,数据库文件出问题,现象就是,一些的查询操作会报以下错误:
Microsoft OLE DB Provider for SQL Server 错误 '80004005'
Warning: Fatal error 644 occurred at Aug 5 2004 8:45AM
或者:
Microsoft OLE DB Provider for SQL Server 错误 '80004005'
Warning: Fatal error 823 occurred at Aug 4 2004 10:39PM
823 错误是指:
SQL Server 在对某设备进行读或写请求时遇到 I/O 错误。该错误通常表明磁盘
问题。
644 错误是指:
当索引 ID 表示的非聚集索引出错时发生该错误。当进程试图删除不存在的行时检测到该损坏。
那个数据库服务器的硬盘是做了Raid 5 的,查询具体的硬盘,没有看到那块硬盘坏了。把数据备份,然后恢复到另外一台机子。仍然存在这个问题。显然数据库文件有坏块了。
试图通过下面语句修复数据库,但是只能修复部分数据,但是不能完全修复。
dbcc checktable('数据表')
dbcc checktable('数据表') WITH ALL_ERRORMSGS
DBCC CHECKTABLE (数据表,repair_allow_data_loss)
DBCC DBREINDEX('数据表')
sp_dboption '数据库名', 'SINGLE USER', TRUE
DBCC CHECKDB('数据库名', REPAIR_ALLOW_DATA_LOSS)
sp_dboption '数据库名', 'SINGLE USER', FALSE
用SQL Server 的导入导出功能无法完全导出数据。会报 823 错误。对所有数据的Select ,也会报 823 错误。
下面是用这些修复语句修复后,返回的一些有代表性的错误信息:
Server: Msg 8929, Level 16, State 1, Line 1
对象 ID 797245895: 在文本 ID 4582550994944 中发现错误,该文本的所有者是由 RID = (1:65204:25) ReplyID = 22853478 标识的数据记录。
Server: Msg 8909, Level 16, State 1, Line 1
表错误: 对象 ID 0,索引 ID 13824,页 ID (1:430153)。页首结构中的 PageId = (31744:9744137)。
Server: Msg 2533, Level 16, State 1, Line 1
表错误: 未发现页 (1:307388),该页分配给了对象 ID 397244470,索引 ID 0。可能页无效或页首结构中的对象 ID 信息不正确。
Server: Msg 8978, Level 16, State 1, Line 1
表错误: 对象 ID 397244470,索引 ID 1。页 (1:307360) 缺少上一页 (1:307391) 对它的引用。可能是因为链的链接有问题。
Server: Msg 8976, Level 16, State 1, Line 1
表错误: 对象 ID 397244470,索引 ID 1。在扫描操作中未发现页 (1:307388),而其父代 (1:308098) 和上一页 (1:307387) 指向了该页。请检查先前的错误。
Server: Msg 8980, Level 16, State 1, Line 1
表错误: 对象 ID 397244470,索引 ID 1。索引节点页 (1:308098),槽 155 指向子页 (1:307389) 和上一子页 (1:307388),但未遇到这些页。
Server: Msg 8939, Level 16, State 1, Line 1
表错误: 对象 ID 825360384,索引 ID 62467,页 (1:430152)。测试(m_slotCnt > MaxSlot)失败。值为 5409 和 4048。
Server: Msg 8986, Level 16, State 1, Line 1
发现的错误数目(201)太多(属于对象 ID 797245895)。若要查看所有的错误信息,请用 'WITH ALL_ERRORMSGS' 重新运行该语句。
Server: Msg 8964, Level 16, State 1, Line 1
Table error: Object ID 797245895. The text, ntext, or image node at page (1:90548), slot 53, text ID 4297096364032 is not referenced.
Server: Msg 8974, Level 16, State 1, Line 1
Text node referenced by more than one node. Object ID 797245895, text, ntext, or image node page (1:100941), slot 15, text ID 4367996551168 is pointed to by page (1:407572), slot 25 and by page (1:430169), slot 25.
Server: Msg 8961, Level 16, State 1, Line 1
Table error: Object ID 797245895. The text, ntext, or image node at page (1:100944), slot 29, text ID 4582550732800 does not match its reference from page (1:430166), slot 55.
Server: Msg 8965, Level 16, State 1, Line 1
Table error: Object ID 797245895. The text, ntext, or image node at page (1:307381), slot 4, text ID 4584554954752 is referenced by page (1:3786), slot 75, but was not seen in the scan.
Error: 823, Severity: 24, State: 2
I/O error (torn page) detected during read at offset 0x000000d2086000 in file 'E:\database\DbName.mdf'.
17310 :
SqlDumpExceptionHandler: Process 3224 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
17065 :
SQL Server Assertion: File: >"xact"
18052 :
Error: 3624, Severity: 20, State: 1.
17066 :
SQL Server Assertion: File: >proc.c
17066 :
SQL Server Assertion: File: >recbase.cpp m_SizeRec'.
这些修复都无效后,最后只有采用了最原始的方式,写程序逐行用SELECT语句将数据提取出来。好在每天都有备份,这次只有几十条数据丢失。
至于为啥产生这个错误,目前仍然不知道。
相关推荐
数据库日志文件损坏修复,数据库日志文件损坏修复 数据库日志文件损坏修复
Oracle数据库日志文件损坏时修复方法的实验研究
Oracle 修复数据库中的坏块Oracle 修复数据库中的坏块
MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。
由于处理不当,引起数据库中出现坏块,此文档中记载了详细的解决方案,希望可以帮到大家!
Oracle数据库日志文件损坏时修复方法的实验研究.pdf
Oracle数据库数据文件损坏时修复方法的实验研究.pdf
数据库损坏如何修复(bcp).txt 数据库损坏如何修复(bcp).txt数据库损坏如何修复(bcp).txt数据库损坏如何修复(bcp).txt数据库损坏如何修复(bcp).txt
数据库修复修复质疑数据库 修复质疑数据库修复质疑数据库修复质疑数据库 修复质疑数据库
MySQL数据库修复程序,表查看,读取,表设计。SQL数据库内容读取。
2. 意外掉电或异常强制关机,造成数据文件损坏,主要数据库正在被读写过程中异常关机。 3. 数据库的表被破坏或索引等被破坏,或者数据库的其他对象被破坏或丢失等。 4. 删除了数据文件,或者更改了它的名字。 5. ...
Db2数据库损坏的修复过程.docx
一次断电导致Access损坏,最后用本工具修复成功!现在提供给需要的人!
本文将为大家介绍MySQL数据库中部分数据损坏恢复过程。
SEPM数据库损坏修复.pdf
极佳SQL数据库修复大师10.0,支持MSSQL 7.0 2000 2005 2008 2008R2 2012 2014 2016 2017 支持各种ERP数据库 金蝶 速达 用友 管家婆等等基于MSSQL数据库。支持数据库无法附加 报错等故障。 支持 各种版本SQL数据库...
用友U8数据库检测修复工具(可修复SQL数据库),可以修复用友U8数据库,也是SQL数据库的修复工具,有需要的朋友请下!
SQL数据库修复软件 3.55 本程序 目前支持SQL 2000 2005 2008 (32\64)位数据库MDF的修复,修复后将直接附加到SQL上生成新的MDF和LDF 文件。 特点: 对断电 黑客攻击 病毒破坏 数据库异常 置疑 脱机 报错 表打不开 ...
在使用采用sqlserver作为数据库的大型软件,因断电、异常操作、磁盘物理坏道等引起的数据库出现“置疑”标志,可以通过这个工具快速修复。 这个工具的原理很简单:新建同名数据库,然后用出现质疑的数据库数据文件...
1、单击数据库修复脚本.bat 2、出现dos修复界面,等待 3、dos界面自动关闭,修复完成,查询即可。