你目前正处于脱机状态,正在等待 Internet 重新连接

SQL Server 诊断信息来检测未报告由于陈旧的读取或写入丢失的 I/O 问题

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 826433
症状
如果丢失的操作系统、 驱动程序或硬件问题导致写条件或陈旧的阅读的条件您可以看到数据完整性相关的错误消息如错误 605,823,3448),3456。您可能会收到与以下示例类似的错误消息:

2003-07-24 16:43:04.57 spid63 Getpage: bstat = 0x9、 sstat = 0x800,高速缓存
2003-07-24 16:43:04.57 spid63 pageno/应该是: objid/应为:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424
2003-07-24 16:43:04.57 spid63...IAM 表示该页面分配给此对象

2003-07-24 16:52:37.67 spid63 错误: 605 的严重性: 21 日状态: 1
2003-07-24 16:52:37.67 spid63 尝试提取 pubs 属于对象 '作者' 不到对象标题的数据库中的逻辑页 (1:7040966).

2003-07-24 16:52:40.99 spid63 错误: 3448 的严重性: 21 日状态: 1
2003-07-24 16:52:40.99 spid63 无法撤消交易记录 id (0:159696956,) 在页上 (1:7040977),数据库 pubs (数据库 ID 12) 日志记录 (63361:16876:181,)。页面信息: LSN = (63192:958360:10)、 键入 = 2。记录的信息: 操作码 = 上下文 1 2.

2003-07-09 14:31:35.92 spid66 错误: 823 的严重程度: 24 日状态: 2
2003-07-09 14:31:35.92 spid66 (坏页 ID) 检测到 I/O 错误 0x00000016774000 h:\sql\MSSQL\data\tempdb.mdf 文件中的偏移量读取过程中.

2010-02-06 15:57:24.14 spid17s 错误: 3456 的严重性: 21 日状态: 1。
2010-02-06 15:57:24.14 spid17s 无法在页上 (1:480946),数据库 'MyDatabase' (数据库 ID 17) 的交易记录 id (0:109000187,) 恢复日志记录 (58997:5252:28,)。页: LSN = (58997:5234:17)、 键入 = 3。日志: 操作码 = 2、 上下文 5、 PrevPageLSN: (58997:5243:17)。从数据库的备份中还原或修复数据库。
更多信息
Microsoft 推出扩展的跟踪功能与 SQL Server 2000 Service Pack 4 开始和这些诊断程序已在 SQL Server 2005 及更高版本中的产品的一部分。这些功能旨在帮助检测 I/O 相关的外部问题和错误消息进行疑难解答"症状"一节中描述

如果您收到"症状"一节中提到的错误消息以及他们无法解释的物理驱动器故障之类的然后检查 SQL Server、 操作系统、 驱动程序和硬件的任何已知的问题。诊断程序将尝试提供有关以下两种情况的信息:
  • 写丢失:写文件API 但操作系统、 驱动程序或 cachingcontroller 成功调用不会不正确地将数据刷新到物理媒体甚至 thoughSQL 服务器将通知写入成功。
  • 读取过时: 成功调用ReadFile API 但操作系统、 驱动程序或 cachingcontroller 错误返回数据的旧版本。
如 Microsoft 已经确认的WriteFile API 调用返回作为成功但是相同的数据块的即时的成功读取返回包括数据可能存储在硬件读缓存中的旧数据。有时出现此问题是由于读取的缓存问题。在其他情况下写入数据永远不会实际写入物理磁盘。

若要启用这些类型的问题的其他诊断,SQL Server 添加了跟踪标志 818。作为启动参数可以指定跟踪标志 818-t818) 正在运行 SQL Server 或您的计算机可以运行下面的语句:
DBCC TRACEON(818, -1)

跟踪标志 818 启用用于的跟踪成功的最后 2048 个写入操作所执行的运行第 SQL Server 不包括排序和工作文件 i/o 操作的链接的计算机的内存中环缓冲区。发生错误如错误 605、 823 或 3448) 会将传入缓冲区的日志序列号 (LSN) 值与最新写入列表进行比较。早于在写操作过程中指定的一个在读取操作过程中检索的 LSN 时 SQL Server 错误日志中记录新的错误消息。大多数 SQL Server 写操作将作为检查点或延迟的写操作。惰性写入是使用异步 I/O 的后台任务。环形缓冲区的实现是轻量的从而使性能的影响可以忽略不计的系统。

下列消息表示 SQL Server 没有写文件API 调用或ReadFile API 调用从收到一个错误。但当评审 LSN 值的不正确:

SQL Server 已检测到未报告的操作系统中的硬件级别读取或写入数据库 12 页 (1:75007) 上的问题
LSN 返回 (63361:16876:181)、 LSN 预期 (63361:16876:500)
联系硬件供应商联系并考虑禁用缓存机制来解决问题

从 SQL Server 2005 开始将作为报告的错误消息:

SQL Server 检测到逻辑一致性基于 I/O 错误: 读取过时。在<Read rite="">期间发生 > 页<PAGEID>的 > 数据库 ID<DBID>中 > 偏移量<PHYSICAL offset="">> 文件<FILE name="">中 >。在 SQL Server 错误日志或系统事件日志中的其他邮件可能提供更多详细信息。这是一个严重错误条件将威胁到数据库的完整性并必须立即纠正。填写完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能导致由很多因素。更多的信息请参阅 SQL Server 联机丛书。</FILE> </PHYSICAL> </DBID> </PAGEID> </Read>

此时请读的缓存包含该页面的较旧版本或数据未正确写入物理磁盘。(写丢失或读取过时) 两种情况下 SQL Server 报告操作系统、 驱动程序或硬件层外部问题。

如果尝试回滚事务具有错误 605 或错误 823 时发生错误 3448,自动运行 SQL Server 的计算机将关闭该数据库并尝试打开并恢复数据库。遇到错误 605 或错误 823 的第一页将被视为损坏的页和页 id 保存运行 SQL Server 的计算机。(之前的恢复阶段) 的恢复过程时被读取的页面错误 id 在 SQL Server 错误日志中记录有关页标题的主要细节。该操作很重要因为它有助于写丢失和读取过时的方案之间进行区分。

您可能会看到以下两个常见的行为中读取过时的方案:
  • 如果数据库文件是关闭并再打开 thecorrect 最近写入的数据在恢复过程中返回。
  • 当发出检查点以及运行DBCC DROPCLEANBUFFERS语句 (以从内存中删除所有数据库页) 然后将最近写入的数据 isreturned 的数据库上运行DBCC CHECKDB语句。
前面的段落中提到的行为表示读取缓存问题和他们经常通过禁用读的缓存得到解决。通常在前面的段落中概述的操作强制缓存失效并成功进行的读取显示的物理介质正确更新。读回页仍是旧版本的数据即使强制刷新缓存机制时发生写丢失问题。

有时问题可能不是特定于某个硬件缓存。它可能是筛选器驱动程序的问题。在这种情况下查看您的软件包括备份实用程序和防病毒软件、 并查看是否有与该筛选器驱动程序的问题。

Microsoft 还注意到错误 605 或错误 823 不符合条件但由相同的读取过时或写丢失活动的条件。在某些情况下出现的页来更新两次但具有相同的 LSN 值。如果对象 ID页 ID正确 (页已分配给该对象),和对页进行更改并将其转储到磁盘可能会出现此行为。下一步的网页检索返回较旧的映像,然后进行第二个更改。SQL Server 事务日志显示页具有相同的 LSN 值更新两次。此操作尝试还原事务日志序列时出现问题或与例如外键故障或缺少数据条目的数据一致性问题。下面的错误消息说明了这种情况的一个示例:

错误: 第 3456 严重: 21 日状态: 1 无法恢复日志记录 (276666:1664:19,) 的交易记录 ID (0:825853240,) 在页上 (1:1787100),数据库作者 (7)。页: LSN = (276658:4501:9)、 键入 = 1。日志: 操作码 = 4、 上下文 2 PrevPageLSN: (275565:3959:31).

在下面的列表更详细地描述了某些情况:
  • LSN Sequence		Action1			Checkpoint2			Begin Transaction3			Table created or truncated4			Inserts (Pages allocated)5			Newly allocated page written to disk by Lazy Writer6			Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID7			Rollback of transaction initiated
  • LSN Sequence		Action1			Checkpoint2			Begin Transaction3			Page Modification4			Page written to disk by Lazy Writer5			Page read in for another modification (stale image returned)6			Page Modified for a second time but because of stale image does not see first modification 7			Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page
SQL Server 排序运算符执行主要向和从tempdb数据库的 I/O 活动。这些 I/O 操作是类似于缓冲区 I/O 操作。但它们有已被设计为使用读取重试逻辑来尝试解决类似的问题。本文中介绍的附加诊断不应用于这些 I/O 操作。

Microsoft 已经注意到以下排序的根本原因读取失败通常是读取过时或写丢失:

2003-04-01 20:13:31.38 spid122 SQL Server 断言: 文件: <p:\sql\ntdbms\storeng\drs\include\record.inl>,行 = 1447年失败肯定 = ' m_SizeRec > 0 && m_SizeRec<= maxdatarow'.=""></=>

2003-03-29 09:51:41.12 spid57 排序读取失败 (损坏的页 ID)。pageid = (0x1:0x13e9)、 dbid = 2 文件 = e:\program 数值 SQL Server\mssql\data\tempdb.mdf。正在重试。

2003-03-29 09:51:41.13 spid57 错误: 823 的严重程度: 24 日状态: 7
0x000000027d2000 'e:\program 数值 SQL Server\mssql\data\tempdb.mdf 文件中的偏移量读取过程中检测到 2003年-03-29 09:51:41.13 spid57 I/O 错误 (坏页 ID)。

* 00931097 Module(sqlservr+00531097) (utassert_fail + 000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize + 00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn + 00000012)
* 00852520 Module(sqlservr+00452520) (mergerow + 000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext + 00000285)
* 0085207 D Module(sqlservr+0045207D) (mergenext + 0000000 D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted + 00000021)

</p:\sql\ntdbms\storeng\drs\include\record.inl>
那些经历过这些排序错误的客户通过将tempdb移动到非缓存本地驱动器或通过禁用读取缓存机制经常解决问题。

因为读取过时或写丢失结果不预期的数据存储在各种不同的行为可能会发生。它可能显示为丢失的数据而丢失的数据更常见的影响的一些显示为索引损坏,错误 644 或错误 625 如:

错误 644 严重性级别 21 消息文本找不到索引项 RID %。 * 索引页 %2 索引 ID %d 中的 hs 数据库 %。 * 1! '。
错误 625 严重性级别 21 消息文本无法从中检索行页 %1 因为开关 (%d) 无效。

有些客户曾报告在执行行计数操作之后发现行丢失。出现此问题是由于写丢失。也许该页应当要链接到聚簇的索引页链。是否物理丢失写数据也会丢失。

重要:如果您遇到任何行为或可疑的禁用缓存机制以及类似的问题如果 Microsoft 强烈建议您获取最新的更新 SQL Server 和最新的 SQL Server I/O 负载模拟器。Microsoft 还强烈建议您执行严格审查您的操作系统和其关联的配置。

注意:Microsoft 已经确认在少数和繁重的 I/O 负载下某些硬件平台都可以返回读取过时。如果扩展的诊断表明可能过时失去读/写条件、 向上联系您的硬件供应商立即按照和测试 SQLIOSim 实用程序。

SQL Server 要求系统支持下所述的保证的传递到稳定介质SQL Server I/O 可靠性程序要求.有关 SQL Server 数据库引擎的输入和输出要求 Microsoft SQL Server 数据库引擎的输入/输出要求.

警告:本文已自动翻译

属性

文章 ID:826433 - 上次审阅时间:06/04/2015 19:56:00 - 修订版本: 2.0

Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 标准版, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2005 Compact Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Analysis Services, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Express with Advanced Services, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Standard Edition for Small Business, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, SQL Server 2012 Enterprise Core, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, SQL Server 2014 Reporting Services

  • kbhotfixserver kbqfe kbbug kbhardware kbfilter kbdriver kbdatabase kbsysadmin kbinfo kbmt KB826433 KbMtzh
反馈