e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> Sybase教程 >> 解决 Error 605 错误的方案 >> 教程正文
 
教程搜索
 
 
相关教程
  • Sybase数据库简介
  • 为什么有时候数据库事务日
  • 在LINUX下安装 Sybase AS
  • Dealing with identity g
  • 关于sybase数据库的锁
  • SYBASE内存和缓冲区管理(
  • sybase 临时数据库tempdb
  • SYBASE dbccdb的安装配置
  • 从数据库应用系统查找解决
  • Sybase数据库的碎片整理(
  • SYBASE数据库用户管理基本
  • sybase 珍藏系列之三(fr
  • sybase 珍藏系列之四(fr
  • SYBASE补丁安装指南
  • 解决 Error 605 错误的方
  • Sybase TraceFlag 定义
 
 
赞 助 商
 
 
解决 Error 605 错误的方案
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

错误原始信息(例子):

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)


  • 上一篇教程: Sybase TraceFlag 定义
  • 下一篇教程: SYBASE补丁安装指南
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.