症状
假设你使用 SQL Server 2012、2014或 2016 AlwaysOn AlwaysOn 可用性组,并且你的数据库包含一些损坏的页面,因为出现故障的存储驱动程序出现故障。 在这种情况下,"自动页面修复" 功能可能会在后台以静默方式成功修复页面。 但是,DBCC CHECKDB 或 DBCC CHECKTABLE 命令不适合这些修复的页面。 此外,你会收到类似于以下内容的错误消息:
Msg 5262、Level 16、State 1、Line line_id 对象 ID object_id、索引 ID index_id、分区 ID partition_id、分配单元 ID alloc_unit_id (类型行内数据)、页面(page_id)、行 row_id: Row 包含 NULL 版本的时间戳,但其版本链指针不为 NULL。 版本链指向页面(0:0),第1槽。
收到此错误消息时,并不意味着数据库损坏。 相反,它指示 DBCC 命令不会识别这些页面是否已修复。 应用此修补程序后,DBCC 命令现在可识别页面已修复,您将不再收到此错误消息。 若要检查已修复的页面,请运行以下动态管理视图(DMV)查询:
select * from msdb..suspect_pages
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。