适用范围:SQL Server
详细信息
特征 | 值 |
---|---|
产品名称 | SQL Server |
事件 ID | 823 |
事件来源 | MSSQLSERVER |
组件 | SQLEngine |
符号名称 | B_HARDERR |
消息正文 | 在文件 '%ls' 中、偏移量为 %#016I64x 的位置执行 %S_MSG 期间,操作系统已经向 SQL Server 返回了错误 %ls。 SQL Server 错误日志和系统事件日志中的其他消息中可能有更详细的信息。 这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能是由多种因素导致的;有关详细信息,请参阅 SQL Server 联机丛书。 |
说明
SQL Server 使用 Windows API(例如 ReadFile、WriteFile、ReadFileScatter、WriteFileGather)执行文件 I/O 操作。 SQL Server 执行这些 I/O作后,它会检查与这些 API 调用关联的任何错误条件。 如果 API 调用因操作系统错误而失败,则 SQL Server 报告错误 823。
823 错误消息包含以下信息:
- 对其执行 I/O作的数据库文件。
- 尝试执行 I/O 操作的文件中的偏移。 这是距文件开头的物理字节偏移。 将此数字除以 8,192 可提供受错误影响的逻辑页码。
- I/O作是读取还是写入请求。
- 括号中的作系统错误代码和错误说明。
作系统错误: 读取或写入 Windows API 调用不成功,SQL Server 遇到与 Windows API 调用相关的作系统错误。 下面是 823 错误的示例消息:
Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'e:\program files\Microsoft SQL Server\mssql\data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
你可能会在错误消息中看到与该文件关联的数据库的 DBCC CHECKDB 语句中的错误。 出现 823 错误时,你可运行 DBCC CHECKDB 语句。 如果 DBCC CHECKDB 语句未报告任何错误,则可能遇到间歇性系统问题或磁盘问题。
使用跟踪标志 818 时,可能会将 823 错误的其他诊断信息写入 SQL Server 错误日志文件。 有关详细信息,请参阅 SQL Server 诊断检测到由于读取过时或写入丢失而未报告的 I/O 问题。
原因
823 错误消息通常表示基础存储系统或硬件或驱动程序在 I/O 请求的路径中存在问题。 如果文件系统中存在不一致,或者数据库文件已损坏,则可能遇到此错误。 对于文件读取,SQL Server 在返回 823 之前已重试读取请求四次。 如果重试作成功,则查询不会失败,但消息 MSSQLSERVER_825 写入 ERRORLOG 和事件日志。
用户操作
查看 suspect_pages 表,
msdb
了解遇到此问题的其他页面(在同一数据库或不同数据库中)。使用 DBCC CHECKDB 命令检查位于同一卷(823 消息中所报告的卷)上的数据库的一致性。 如果发现 DBCC CHECKDB 命令不一致,请使用如何解决 DBCC CHECKB 报告的数据库一致性错误中的指南。
查看 Windows 事件日志中是否存在从操作系统或存储设备/设备驱动程序中报告的错误或消息。 如果它们以某种方式与此错误相关,请先解决这些错误。 例如,除了 823 消息之外,你可能还会注意到“驱动程序检测到\Device\Harddisk4\DR4 上的控制器错误”等事件,该事件由事件日志中的磁盘源报告。 在这种情况下,你须评估此设备上是否存在此文件,然后先更正这些磁盘错误。
使用 SQLIOSim 实用工具模拟磁盘子系统实用工具上的 SQL Server 活动,以确定是否可以在常规 SQL Server I/O 请求之外重现这些 823 错误。 SQLIOSim 实用工具附带了 SQL Server 2008 和更高版本,因此无需单独下载。 通常可以在
C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn
文件夹中找到它。与硬件供应商或设备制造商合作,确保
- 硬件设备和配置符合 SQL Server 的 I/O 要求
- I/O 路径中所有设备的设备驱动程序和其他支持软件组件都是最新的
如果硬件供应商或设备制造商为你提供了一些诊断实用工具,请用这些实用工具评估 I/O 系统的运行状况
评估在遇到问题的这些 I/O 请求的路径中是否存在筛选器驱动程序。
- 检查这些筛选器驱动程序是否有任何更新
- 是否可以删除或禁用这些筛选器驱动程序,以观察导致 823 错误的问题是否消失?