Sql Server 2000出错,救命啊

mendel 2006-08-30 10:32:26
在应用程序日志中总是有这样的错误:

事件类型: 错误
事件来源: MSSQLSERVER
事件种类: (2)
事件 ID: 17055
日期: 2006-8-30
事件: 10:15:04
用户: N/A
计算机: UYING-LXL5A1G17
描述:
17066:
SQL Server 断言: 文件: <SpcAlloc.cpp>,行 = 466
失败的断言 =“0”。


有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
数据:
0000: aa 42 00 00 10 00 00 00 ªB......
0008: 10 00 00 00 55 00 59 00 ....U.Y.
0010: 49 00 4e 00 47 00 2d 00 I.N.G.-.
0018: 4c 00 58 00 4c 00 35 00 L.X.L.5.
0020: 41 00 31 00 47 00 31 00 A.1.G.1.
0028: 37 00 00 00 0a 00 00 00 7.......
0030: 64 00 62 00 5f 00 6e 00 d.b._.n.
0038: 65 00 77 00 42 00 42 00 e.w.B.B.
0040: 53 00 00 00 S...

===============================================================

事件类型: 错误
事件来源: MSSQLSERVER
事件种类: (2)
事件 ID: 17055
日期: 2006-8-30
事件: 10:14:50
用户: N/A
计算机: UYING-LXL5A1G17
描述:
18052:
错误: 3624,严重度: 20,状态: 1。


有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
数据:
0000: 84 46 00 00 10 00 00 00 „F......
0008: 10 00 00 00 55 00 59 00 ....U.Y.
0010: 49 00 4e 00 47 00 2d 00 I.N.G.-.
0018: 4c 00 58 00 4c 00 35 00 L.X.L.5.
0020: 41 00 31 00 47 00 31 00 A.1.G.1.
0028: 37 00 00 00 0a 00 00 00 7.......
0030: 64 00 62 00 5f 00 6e 00 d.b._.n.
0038: 65 00 77 00 42 00 42 00 e.w.B.B.
0040: 53 00 00 00 S...

==============================================================

事件类型: 错误
事件来源: MSSQLSERVER
事件种类: (2)
事件 ID: 17052
日期: 2006-8-28
事件: 0:15:07
用户: N/A
计算机: UYING-LXL5A1G17
描述:
错误: 624,严重度: 20,状态: 2
未能从页中按 RID 检索行,因为所请求的 RID 比页中最后一个 RID 的数值还高。Rid pageid is (1:551805) and row num is 0xa。Page pointer = 0x68416000, PageId = (1:551805), flags = 0x8008, objectid = 2034106287, indexid = 0,DBID 10。

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
数据:
0000: 70 02 00 00 14 00 00 00 p.......
0008: 10 00 00 00 55 00 59 00 ....U.Y.
0010: 49 00 4e 00 47 00 2d 00 I.N.G.-.
0018: 4c 00 58 00 4c 00 35 00 L.X.L.5.
0020: 41 00 31 00 47 00 31 00 A.1.G.1.
0028: 37 00 00 00 0a 00 00 00 7.......
0030: 64 00 62 00 5f 00 6e 00 d.b._.n.
0038: 65 00 77 00 42 00 42 00 e.w.B.B.
0040: 53 00 00 00 S...


=================================================================

事件类型: 错误
事件来源: MSSQLSERVER
事件种类: (2)
事件 ID: 17052
日期: 2006-8-28
事件: 0:15:07
用户: N/A
计算机: UYING-LXL5A1G17
描述:
错误: 624,严重度: 20,状态: 2
Could not retrieve row from page by RID because the requested RID has a higher number than the last RID on the page. Rid pageid is (1:551805) and row num is 0xa.Page pointer = 0x68416000, PageId = (1:551805), flags = 0x8008, objectid = 2034106287, indexid = 0, DBID 10.

有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
数据:
0000: 70 02 00 00 14 00 00 00 p.......
0008: 10 00 00 00 55 00 59 00 ....U.Y.
0010: 49 00 4e 00 47 00 2d 00 I.N.G.-.
0018: 4c 00 58 00 4c 00 35 00 L.X.L.5.
0020: 41 00 31 00 47 00 31 00 A.1.G.1.
0028: 37 00 00 00 0a 00 00 00 7.......
0030: 64 00 62 00 5f 00 6e 00 d.b._.n.
0038: 65 00 77 00 42 00 42 00 e.w.B.B.
0040: 53 00 00 00 S...



...全文
450 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mendel 2006-09-02
  • 打赏
  • 举报
回复
我把自动编号删除,就再也不能创建自动编号了.....
zjcxc 元老 2006-09-01
  • 打赏
  • 举报
回复
如果错误发生在普通处理过程中
执行带有 REPAIR_REBUILD 子句的 DBCC CHECKTABLE。如果执行带有 REPAIR_REBUILD 子句的 DBCC CHECKTABLE 未更正该问题,则除去并重新创建受影响的索引。



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


索引未知、查询已知
解决该问题的最快方法是执行带有 REPAIR_REBUILD 子句的 DBCC CHECKDB。本操作修复整个数据库中的所有索引损坏。如果数据库太大因而不想运行 DBCC CHECKDB,则使用下列说明以找到要除去并重新创建的特定索引。

如果不知道哪个索引导致了问题但知道哪个查询遇到了问题,请遵照下列说明操作。如果索引或查询均未知,请遵照下一节"索引和查询均未知"中的说明操作。

通过读取遇到错误的查询的显示计划输出来确定应除去哪个索引。如果设置 SET SHOWPLAN_TEXT 为 ON、SET NOEXEC 为 ON,然后运行该查询,则输出指出查询使用哪个非聚集索引访问该表。
例如:

USE pubs
GO
SET SHOWPLAN_TEXT ON
GO
SET NOEXEC ON
GO
SELECT title
FROM titles
WHERE title > 'Cooking'
GO

下面是结果集:

StmtText
----------------
SET NOEXEC ON

(1 row(s) affected)

StmtText
-------------------------------------------------------
SELECT title
FROM titles
WHERE title > 'Cooking'

(1 row(s) affected)

StmtText
---------------------------------------------------------------------
|--Index Seek(OBJECT:([pubs].[dbo].[titles].[titleind]), SEEK:([titles].[title] > [@1]) ORDERED FORWARD)

(1 row(s) affected)

再次设置 SET NOEXEC 为 OFF、SET SHOWPLAN_TEXT 为 OFF:
SET NOEXEC OFF
GO
SET SHOWPLAN_TEXT OFF
GO

除去并重新创建步骤 1 中标识的索引(本例中为 titleind)。
索引和查询均未知
如果索引和查询均未知,则重建表中的所有非聚集索引,如下所示:

当获得表名时查看使用 DBCC CHECKDB 创建的输出:
如果对象 ID 小于 100,则无法除去可重新创建索引。请不要继续步骤 2 或 3。必须从某个已知的清洁备份还原数据库。


如果对象 ID 为 100 或更大,则继续进行步骤 2。
使用 sp_helpindex 列出表中的所有索引,然后使用下列方法之一重建所有非聚集索引:
除去并重新创建表中的每个非聚集索引。


如果表具有聚集索引,则除去并重新创建该索引。这使得所有非聚集索引自动重建。如果您的表较大,则可能没有进行此操作的空间。通常,可用的空间必须为表大小的 1.2 倍。
在重新创建了适当的索引之后,在表上运行 DBCC CHECKTABLE 以确认问题已解决。
zjcxc 元老 2006-09-01
  • 打赏
  • 举报
回复
错误 624
严重级别 21
消息正文
未能从页中按 RID 检索行,因为所请求的 RID 比页中最后一个 RID 的数值还高。%1!。%2!、Dbid %3!。

解释
当试图通过指定行 ID (RID) 来从数据页检索行,因为所请求的 RID 数字比该页的最后一个 RID 大而失败时,发生该错误。如果损坏的非聚集索引的叶级页指向数据页上不正确的或不存在的 RID,则可能在普通处理中发生该错误。

如果当其他用户正在更新系统表(执行 DDL)时,在只读操作中在系统表上发生该错误,则它可能是暂时的 624 错误(而不是索引损坏)。若要确认无损坏,请执行不带修复子句的 DBCC CHECKTABLE。

对策
恢复过程视错误发生的时间而定。如果问题仍存在,则下列过程可能不足以清除索引损坏。在这种情况下,请与您的主要支持提供者联系。提供 DBCC CHECKTABLE(如果调查可能的系统表损坏)或 DBCC CHECKDB 的输出以便检查。
mendel 2006-09-01
  • 打赏
  • 举报
回复
自己UP一下
fxf66 2006-08-30
  • 打赏
  • 举报
回复
up

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧