原文来自:http://support.microsoft.com/kb/828339
Jesse备注:一旦出现此文描述的问题时,需重点关注下,并且要做checkdb看看是否已经出现了影响数据存储安全的事情发生,查看下,msdb.dbo.suspect_pages表中的内容。
本文内容
症状
如果您收到以下错误消息,则可能表示 Microsoft SQL Server 2000 程序检测到硬件或系统问题时它被读取或写入到数据库文件:
注意错误消息的格式是在 Microsoft SQL Server 2005 和 Microsoft SQL Server 7.0 稍有不同。但是,相同的概念和讨论也应用于 SQL Server 2005 和 SQL Server 7.0。
此消息的各个部分有关的信息如 < error > 和 < operation >,和的通过 SQL Server 2000 所做的 Microsoft Windows API 调用使用的详细信息,请参阅本文的"更多信息"一节。
错误 823
I/O 错误 < error > 过程中检测到 < operation > 偏移量处 < offset > 文件中 < file>'
I/O 错误 < error > 过程中检测到 < operation > 偏移量处 < offset > 文件中 < file>'
此消息的各个部分有关的信息如 < error > 和 < operation >,和的通过 SQL Server 2000 所做的 Microsoft Windows API 调用使用的详细信息,请参阅本文的"更多信息"一节。
解决方案
SQL Server 2000 会引发如果满足下列条件,则本文"症状"一节中提到的错误:
- 操作系统错误: A 读取 Windows API 调用或写入 Windows API 调用不成功,和 SQL Server 遇到操作系统错误相关的 Windows API 调用。下面的错误消息是错误 823 的操作系统的一个示例:
2003-07-28 09:01:27.38 spid75 错误: 823,严重性: 24,
状态: 2
2003-07-28 09:01:27.38 spid75 I/O 错误 1117年 (请求不能执行由于的) 过程中检测到读取 0x0000002d460000 文件 'e:\program files\Microsoft SQL Server\mssql\data\mydb.MDF 中的偏移量 I/O 设备错误。
注意您可能也不可能会看到与错误消息中的该文件相关联的数据库上的 DBCC CHECKDB 语句中的错误。当您看到 823 错误时,您可以运行 DBCC CHECKDB 语句。如果 DBCC CHECKDB 语句未报告任何错误,您可能有一个间歇性的系统问题或磁盘问题。 - I/O 逻辑检查失败: 如果读取的 Windows API 调用或数据库文件的写入 Windows API 调用成功,但对数据的特定逻辑检查不成功 (残缺的页,例如),就会产生 823 错误。下面的错误消息是错误 823 的逻辑 I/O 的示例检查失败:
2003-09-05 16:51:18.90 spid17 错误: 823,严重性: 24,
状态: 2
2003-09-05 16:51:18.90 spid17 I/O 读取在过程中检测到的错误 (残缺页) 的偏移量中的 0x00000094004000 文件 'F:\SQLData\mydb.MDF
更多信息
错误消息的详细信息
以下 823 错误消息的各部分更详细地说明此处:
错误 823
I/O 错误 < error > 过程中检测到 < operation > 偏移量处 < offset > 文件中 < file>'
I/O 错误 < error > 过程中检测到 < operation > 偏移量处 < offset > 文件中 < file>'
- <error >: 这可以是操作系统错误或逻辑的 I/O 检查失败。一个操作系统错误的操作系统错误号后面 I/O 错误。操作系统错误的文本包含在括号后"I/O 错误error number"。
对于逻辑的 I/O 复选故障失败消息是在圆括号内,并可以是下列值之一:- (残缺的页): 残缺页有关的详细信息,请参阅 SQL Server 2000 丛书联机。
- (坏页 ID): 此消息意味着在页面页眉上的 pageID 不是预期的页面从磁盘读取的。例如对于如果 SQL Server 2000 提供了文件偏移量为 100 的逻辑页的数据库文件 1,该 8 KB 页的页标题上 pageID 应该 1:100。如果该错误不,页面 ID 将包括在逻辑的 I/O 复选失败消息。
- (传输不足字节): 此问题指示 Windows API 调用成功,但已传输的字节是未预期的。
- <operation>: 这是读取或写入。
- <offset>: 这是物理的字节偏移量,从文件开头。此数字除以 8192 将为您提供的错误会影响该逻辑页编号。
- <file>: 这是与 I/O 问题相关联的文件,它包括其完整的物理路径。
SQL Server I/O 和 Windows API
SQL Server 2000 使用 ReadFile、 ReadFileScatter、 WriteFile,以及 WriteFileGather 的标准 Windows API 调用来执行其数据库文件的 i/o 操作。当 SQL Server 2000 使用 Windows API 调用时,已经成功地,打开该文件或 SQL Server 2000 将不尝试从其读取或写入它。因此,Windows API 的调用不成功,并在错误是操作系统错误 6 ("无效处理") 以外的其他错误可能被引发在 Windows 中或通过诸如设备驱动程序的较低级别的软件组件。因为操作系统错误 6 是无效的句柄、 SQL Server 是否以使 Windows API 的调用使用了无效的句柄会出现此问题。但是,这仍可能是系统问题。例如对于您会遇到以下错误消息 SQL Server 错误日志文件中的,如果 SQL Server 遇到操作系统错误 2,它使用 Windows API 的调用将写入 tempdb 主数据库文件时:
错误: 823 严重性: 24,状态: 4
I/O 错误 2 (系统找不到指定的文件)。 在文件中的偏移量 0x00000000284000 处写入过程中检测到 D:\Program Files\Microsoft SQL Server\MSSQL\data\tempdb.mdf
I/O 错误 2 (系统找不到指定的文件)。 在文件中的偏移量 0x00000000284000 处写入过程中检测到 D:\Program Files\Microsoft SQL Server\MSSQL\data\tempdb.mdf
参考
当您使用跟踪标记 818 SQL Server 错误日志文件可能被写入 823 错误的其他诊断信息。 有关此信息的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
826433添加到检测未报告的 I/O 问题 PRB: 其他 SQL Server 诊断
SQL Server 需要系统支持有保障的传递到稳定的媒体 Microsoft SQL Server Always-On 存储解决方案审查程序下所述。 Fo有关输入和输出要求 SQL Server 数据库引擎的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
967576Microsoft SQL Server 数据库引擎输入/输出要求
属性
文章编号: 828339 - 最后修改: 2005年12月20日 - 修订: 2.4
这篇文章中的信息适用于:
- Microsoft SQL Server 2000 标准版
- Microsoft SQL Server 2005 Standard Edition
- Microsoft SQL Server 2005 Developer Edition
- Microsoft SQL 2005 Server Enterprise
- Microsoft SQL Server 2005 Express Edition
- Microsoft SQL 2005 Server Workgroup
- Microsoft SQL Server 2008 Developer
- Microsoft SQL Server 2008 Enterprise
- Microsoft SQL Server 2008 Express
- Microsoft SQL Server 2008 Standard
关键字: | kbmt kbprb KB828339 KbMtzh |