解决 Error 605 错误的方案
2006-02-08 21:44:02 来源:WEB开发网核心提示:错误原始信息(例子):An attempt was made to fetch logical page '%ld' indatabase '%.*s' from cache '%.*s'. Page belongs toobject with id '%ld
错误原始信息(例子):
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: TablenameOBJID = 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)
- ››解决flash 中无法导出swf文件的方法
- ››解决"ios模拟器未能安装此应用程序"办法...
- ››解决jquery easyui easyloader加载外部js文件失败...
- ››解决无法使用Android SDK Manager下载SDK开发包的...
- ››解决网页内容无法复制
- ››解决Android手机在开发调试时logcat不显示输出信息...
- ››解决Windows 8操作系统假死的方法
- ››解决ubuntu 不识别 android 设备 方法
- ››解决ubuntu server sudo出现sudo:must be setuid ...
- ››解决数据库 Table 'content_tags' is mar...
- ››解决FF浏览器和IE下载文件乱码问题
- ››解决Firefox/Opera 不支持 onselectstart事件
更多精彩
赞助商链接