我正在使用 Microsoft SQL Server 2016 (SP2-GDR) (KB4505220) - 13.0.5101.9 (X64) Jun 15 2019 23:15:58 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 (构建 9600:)
昨天,我在同一数据库的“suspect_pages”中有两个条目。事件类型 1 和类型 2 之一
1 = 823 错误导致可疑页面(例如磁盘错误)或 824 错误而不是错误校验和或损坏页面(例如错误页面 ID)。
2 = 校验和错误。
database_id file_id page_id eventtype error_count last_update_date
8 1 1482057 1 1 2019-11-14 14:40
8 1 1482057 2 1 2019-11-14 14:40
我找到了相关的对象,它们都指向数据库上的同一个表。
DBCC TRACEON (3604);
DBCC PAGE (8, 1, 14823057, 0);
DBCC TRACEOFF (3604);
我在损坏之前有一个有效的备份并且无法承受停机时间,所以我对损坏的数据库进行了备份,并以新名称恢复了我的备份。我删除了损坏的表,然后从有效备份中重新创建了它。
今天,我恢复了昨天在测试服务器上进行的损坏的数据库备份,当我运行完整的 checkdb 时,它没有检测到损坏。
DBCC CheckDB() WITH No_INFOMSGS, ALL_ERRORMSGS
我从损坏的数据库中获取的备份(根据怀疑页面)怎么可能没有任何问题?可疑页面中的那些条目会是误报吗?
数据库兼容级别为 130 (SQL 2016) 我们的 SQL Server 在 Windows Server 2012 上运行。
所以我写信给 Brent Ozar,这是我从他那里得到的答复。这是迄今为止我得到的最好的答案,所以我把它放在这里: