症状
假设你在 Microsoft SQL Server 2012 中查询 tempdb.sys.allocation_units 表。 在查询中使用 NOLOCK 提示时,或者查询位于 "读取 UNCOMMITED 事务隔离级别" 下时,将收到以下间歇性的608错误消息:
错误:608严重性:16状态:1在数据库 <数据库名称> 中找不到分区 <ID> 的目录条目。 元数据不一致。 运行 DBCC CHECKDB 检查元数据损坏
注意 DBCC CHECKDB命令不显示任何数据库损坏迹象。
原因
出现此问题的原因是过时的元数据已读脏。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2012 SP2 的累积更新4 /en-us/help/3007556
SQL Server 2012 SP1 的累积更新13 /en-us/help/3002044
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。