IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 解决 Error 605 错误的方案

解决 Error 605 错误的方案

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

错误原始信息(例子):

An attempt was made to fetch logical page '%ld' in
database '%.*s' from cache '%.*s'. Page belongs to
object with id '%ld', not to object '%.*s'.

-------------------------------------------------------------------------------------------------
使用dbcc tablealloc 去检查出现错误的表

命令格式:
 dbcc tablealloc('错误信息中第二个表对象')

最好将错误结果使用 isql 的 -o 参数输出到文件中便于察看


注意:
    这个dbcc 操作可能会锁住接受检查的表,这将影响到其他进程的访问和操作。
-------------------------------------------------------------------------------------------------

DBCC 结果(例子为正常结果):

The default report option of OPTIMIZED is used for this run. 
The default fix option of NOFIX is used for this run. 
*************************************************************** 
TABLE: Tablename OBJID = id_number 
INDID=1  FIRST=257  ROOT=264  SORT=0 
Data level: 1.  1 Data pages allocated and 1 Extents allocated. 
Indid   : 1.  1 Index pages allocated and 1 Extents allocated. 
INDID=2  FIRST=272  ROOT=272  SORT=0 
Indid   : 2.  1 Index pages allocated and 1 Extents allocated. 
TOTAL # of extents = 3 
Alloc page 256 (# of extent=1 used pages=2 ref pages=2) 
Alloc page 256 (# of extent=1 used pages=3 ref pages=3) 
Alloc page 256 (# of extent=1 used pages=2 ref pages=2) 
Total (# of extent=3 used pages=7 ref pages=7) in this database 
DBCC execution completed. If DBCC printed error messages, contact a user with System Administrator (SA) role. 

-------------------------------------------------------------------------------------------------
一. 
如果有一些错误(例如2583或者其他)出现在 INDID为0之后,表示表本身数据损坏。
解决办法:
1. 使用 &select into& 或者 &insert into ... select & 将坏表中能够正常访问的数据取出装入一个临时表中。同时可以使用
& where&加上一些可以缩小选择范围的条件尽量多的将正常的数据取出
2. 或者使用bcp去导出正常的数据
3. 对于实在无法取出的数据,只能通过应用系统中的冗余或者相关信息进行恢复
4. 删除或者重命名坏表,并重新创建新表
5. 将导出的正常数据重新导入新表中

注意: 可能会有一些数据的丢失
-------------------------------------------------------------------------------------------------
二.
如果有一些错误(例如2583或者其他)出现在 INDID为1之后,说明表上的聚簇索引损坏,解决方法同一,也可能出现数据丢失。
如果有一些错误(例如2583或者其他)出现在 INDID为2,3,4.....之后,说明为表上的非聚簇索引损坏,解决方法比较简单,删除此索引然后重新创建即可。

步骤如下:
1. use databasename
   go

2. 获知索引名称
   select name from sysindexes where id = table_object_id and indid = index_number
   go
   
3. 创建一个跟坏索引不同名称但具有相同列的索引
   create index
   你可以使用 sp_help table_name 去察看索引上的列信息
4. 将已损坏索引删除
   drop index

-------------------------------------------------------------------------------------------------
当这些故障排除完毕后,有时间及业务系统允许的情况下,最好再做一次全库的dbcc检查

DBCC checkdb(db_name)
DBCC checkalloc(db_name)
DBCC checkcatalog(db_name)

关键词标签:方案,错误,解决,1&nbs

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)