解决 Error 605 错误的方案_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页数据库MSSQL → 解决 Error 605 错误的方案

解决 Error 605 错误的方案

时间:2015-06-28 00:00:00 来源:绿色软件之家 作者:网管联盟 我要评论(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

相关阅读

文章评论
发表评论

热门文章 浅谈JSP JDBC来连接SQL Server 2005的方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系

相关下载

    人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法