SQL Server 数据库出错求救!

Ascn 2001-10-02 04:59:38
近期我的数据库“ky”出现了以下问题:
当执行SQL语句:Delete From my_ticket Where ticket_no <= '10985001'
(“my_ticket”是“ky”中的一个表,数据量很大,每天有几千行记录进入)
时,系统出现如下结果提示:
“Msg 644, Level 21, State 1
The non_clustered leaf row entry for page 9683 row 6 was not found in
index page 7459 indexid 2 database 'ky'”。

我的数据库表“my_ticket”仅设置了“ticket_no”为主键,没有设置索引。数据库管理系统为SQL Server 6.5,操作系统:Windows NT Server 4.0 & SP6;该数据库中现有数据量为:498635条,各记录的字段均完整正确,主键类型为char(8)。

请问:
1、该问题是什么原因产生的?
2、如何解决?

希望各位高手不吝赐教!谢谢!

lx130@sina.com
2001-10-02
...全文
68 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Ascn 2001-10-07
问题已经解决,感谢Progame!
  • 打赏
  • 举报
回复
Ascn 2001-10-02
非常感谢Progame,但是我现在不能着手解决,因为我不在现场。
相信能够解决这一问题的。谢谢各位!
  • 打赏
  • 举报
回复
progame 2001-10-02

错误 644
严重级别 21
消息正文
未能在索引页 %3! 中找到 RID ''%1!'' 的索引条目(索引 ID %4!、数据库 ''%5!'')。

解释
当索引 ID 表示的非聚集索引出错时发生该错误。当进程试图删除不存在的行时检测到该损坏。

对策
执行不带修复子句的 DBCC CHECKDB 以确定损坏的程度。然后,执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 以更正损坏。如果问题仍存在,则除去并重新创建该索引(如下所示),或与您的主要支持提供者联系。



重要 如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 未更正索引问题,或不确定带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 对数据有何影响,则请与您的主要支持提供者联系。


除去并重新创建索引:

记录错误文本中指定的索引页和索引 ID 的值。


确定哪个表和索引对应于该索引页号。


记下对象 ID。
如果有错的对象是系统表(对象 ID 小于 100),则无法除去该索引。执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB 或从已知的清洁备份还原数据库。

如果对象 ID 大于 100,则使用第 1 步中获得的表名和索引名称除去并重新创建该索引。在大多数情况下,这将清除该错误。


在受影响的数据库上执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB,以验证已解决所有问题。
如果问题仍存在,则该过程可能不足以清除索引错误。在这种情况下,请与您的主要支持提供者联系。使 DBCC CHECKDB 的输出可查阅。
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2001-10-02 04:59
社区公告
暂无公告