SQL 错误 823 I/O error (bad page ID) detected during read【修复方法】

简介:

今天一个数据库损坏了,不管对 该表 查询、修改、添加 都会出错, 错误信息如下:

    I/O error (bad page ID) detected during read at offset 0x0000000171a000 in file “路径\文件”
    连接中断


导致错误的可能性有:
     1:服务器在正常运行的情况下突然断电,导致数据库文件损坏。
     2:对某设备进行读或写请求时遇到 I/O 错误。该错误通常表明磁盘问题。
 但对于以上问题都是无法避免的,庆幸的时,网上找到了解决方法(如下)

当出现这个问题的时候,可能有2种情况:
    1 :附加数据库时,提示 错误:823 
     2:能成功附加数据库,但查询、修改 某个指定表时,出现  I/O error (bad page ID) detected during 错误。
 
解决方法:
     第一个 附加数据库问题,可以参考:http://blog.csdn.net/shazhuyubaichi/article/details/6696031

     第二个问题:

[sql]  view plain copy
 
  1. sp_dboption '数据库名','single user','true'     
  2. Go     
  3.    
  4. DBCC CHECKDB('数据库名', REPAIR_ALLOW_DATA_LOSS)     
  5. Go     
  6.    
  7. sp_dboption '数据库名', 'single user','false'     
  8. Go  


我比较庆幸,通过以上语句就可以修复了。
以下是网上的一段摘要,我没有测试,先记录下来,以后或许有用。

[sql]  view plain copy
 
    1. 方案1:调用DBCC   CHECKDB(‘db_name’,repair_rebuild)修复   
    2.   
    3. 方案2:若方案1失败,采用下面的方法试一试:   
    4. 首先,在企业管理器中新建一数据库(如数据库名为test),建好数据库后,停止SQL Server Service Manager,  
    5. 并将客户数据库的MDF文件更名为test_data.mdf(即新建数据库的主文件名),  
    6. 然后用更名后的文件覆盖新建数据库同名文件,  
    7. 接着,启动企业管理器。对Master数据库将系统表设置为可更改状态     
    8.   
    9. Use   Master     
    10. Go     
    11.   
    12. sp_configure 'allow updates ', 1     
    13. reconfigure with override     
    14. Go     
    15.   
    16. 将数据库设为紧急状态:     
    17. update sysdatabases set status = 32768 where name = 'database'    
    18.    
    19. 停止并重新启动SQL Server Service Manager,并重建Log文件:    
    20. DBCC TRACEON   (3604)     
    21. DBCC REBUILD_LOG( 'test', 'test_log_ldf ')     
    22.   
    23. 将数据库设置为单用户模式,然后进行检测:     
    24. sp_dboption  'test', 'single user ', 'true'     
    25. DBCC   CHECKDB( 'test')     
    26. Go     
    27.   
    28. 此数据库执行CHECKDB的过程中发现一些表的索引被破坏,于是针对具体的表进行重建索引的操作:     
    29. DBCC   DBREINDEX(表名)     
    30.   
    31. 方案3:若无法修复,则只能重备份中进行恢复.  
标签:  sqlserver

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/p/4626915.html    ,如需转载请自行联系原作者


相关文章
|
3月前
|
SQL Web App开发 安全
SQL Server 2025 年 8 月更新 - 修复 CVE-2025-49759 SQL Server 特权提升漏洞
SQL Server 2025 年 8 月更新 - 修复 CVE-2025-49759 SQL Server 特权提升漏洞
293 2
SQL Server 2025 年 8 月更新 - 修复 CVE-2025-49759 SQL Server 特权提升漏洞
|
2月前
|
SQL Web App开发 安全
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
122 0
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
|
5月前
|
SQL 缓存 监控
SQL 质量革命:利用 DAS 智能索引推荐修复慢查询全流程
在数据驱动时代,数据库性能直接影响系统稳定与响应速度。慢查询常因索引缺失、复杂逻辑或数据量过大引发,导致延迟、用户体验下降甚至业务受损。DAS(数据库管理服务)提供智能索引推荐功能,通过分析SQL语句与数据分布,自动生成高效索引方案,显著提升查询性能。本文结合实战案例,详解DAS智能索引推荐原理与使用流程,帮助用户快速定位问题并优化数据库表现,实现系统高效运行。
333 61
|
4月前
|
SQL Web App开发 安全
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
373 0
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
|
6月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
502 18
|
6月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
188 9
|
7月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
263 12
|
7月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
8月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
207 16
|
12月前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
480 71