2 SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:21802,但实际为 34049:134765344)。在文件 'F:\Program Files (x86)\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\test.MDF' 中、偏移量为 0x0000000aa54000 的位置对数据库 ID 7 中的页 (1:21802) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
进入查询分析器中,选择所使用的数据库,并检查该数据库是否存在错误。
可以看到该数据库存在4个分配错误和1个一致性错误。 (为你实际要处理 的数据库.)
发现错误后要开始修复,所使用语句下:sp_dboption 'DbName', 'single user', 'true'--把数据库置为单用户模式DBCC checkdb('DbName',REPAIR_ALLOW_DATA_LOSS)--在允许数据丢失情况下修复数据库。 如果DBCC checkdb('DbName',REPAIR_A LLOW_DATA_LOSS)语句执行一次不行,可以在多执行几次直到没有再提示数据库有错误为止。
检查没有错误后,把数据库重新设置为多用户模式sp_dboption 'local', 'single user', 'false'--设置为多用户模式 这样这个数据库的错误修复就完成了 。然后停止掉SQLSERVER,重新启动服务器就可以.这种方法对于一般出现问题可以不用安装企业管理器。直接在服务器用OSQL –E 进入数据库。然后通过上面两条命令来修复数据库。这样速度比较快。
sp_dboption 'czbt2', 'single user', true
use czbt2
DBCC checktable('hnxc.czbt_btdj',REPAIR_ALLOW_DATA_LOSS)
select * from hnxc.czbt_btdj
好了后再:sp_dboption 'czbt2', 'single user', false把单用户改回来
我尽力了
数据库一致性检查(dbcc)提供了一些命令用于检查数据库的逻辑和物理一致性。Dbcc主要有两个功能:使用checkstorage 或 checktable 及 checkdb 在页一级和行一级检查页链及数据指针。使用checkstorage, checkalloc, 或 checkverify, tablealloc, 及indexalloc检查页分配。 在下列情况中需要使用 dbcc 命令: 作为数据库日常维护工作的一部分, 数据库内部结构的完整性决定于sa 或dbo 定期地运行dbcc 检查。 在系统报错以后, 确定数据库是否有损坏。 在备份数据库之前, 确保备份的完整性。 如果怀疑数据库有损坏时, 例如,使用某个表时报出表损坏的信息, 可以使用 dbcc 确定数据库中其他表是否也有损坏。 下面是dbcc的简单用法: dbcc checktable (table_name) 检查指定的表,检查索引和数据页是否正确链接, 索引是否正确排序, 所有指针是否一致, 每页的数据信息是否合理, 页偏移是否合理。 dbcccheckdb (database_name) 对指定数据库的所有表做和checktable 一样的检查。 dbcccheckalloc (database_name,fix|nofix) 检查指定数据库, 是否所有页面被正确分配,是否被分配的页面没被使用。当使用"fix"选项时,在检查数据库的同时会自动修复有问题的页面。(若数据库数据量很大,则该过程会持续很长时间。)dbcc tablealloc (table_name,fix|nofix) 检查指定的表, 是否所有页面被正确分配,是否被分配的页面没被使用。是 checkalloc 的缩小版本,对指定的表做完整性检查。当使用"fix"选项时,在检查数据表的同时会自动修复数据表中有问题的页面。 关于上述命令的其它选项及详细使用方法和checkstorage, checkverify, indexalloc的详细使用方法, 请参阅有关命令手册。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)