BUG #: 20010946 (SQLBUDT)
症状
在 Microsoft SQL Server 2005 中运行 DBCC 检查命令时, 您可能会收到类似于以下的错误信息:
8909 16 1
表错误: 对象 ID 0,索引 ID-1,0,分区 ID 分配单元 ID 0
(类型未知),页标识 (6:8040) 包含它的页面页眉中不正确的页 ID。 中的 PageId
页标题 = (0: 0)。
对于存储在一个 NTFS 文件系统分区的数据库运行 DBCC 检查命令 NTFS 分区处于 MULTI-USER 模式时,SQL Server 数据库引擎创建的内部、 只读数据库快照。 此行为会阻止运行 DBCC 检查命令时,正在阻塞的问题和并发问题。对数据库快照使用一个或多个稀疏文件来存储数据。
满足以下条件时发生此问题:
• SQL Server 页已写入稀疏文件。
• 这些稀疏文件用于为 DBCC 副本和数据库快照。
• 这些稀疏文件是丢失。
因为稀疏文件丢失,SQL Server 在运行 DBCC 检查命令时读取这些网页上的零的数据。
注意 此行为可能导致一个 false 未能在运行 DBCC 时出现检查命令。 由于 DBCC 检查命令操作的内部、 只读数据库快照,命令不表示指示已损坏数据库本身。 命令仅指示有是内部、 只读数据库快照有问题。
回到顶端
原因
由于争用条件的可能会发生此问题。 在 NTFS 稀疏文件的异步非缓存的写入操作发生争用条件。
回到顶端
更多信息
当页 ID 为 0: 0,可能还会出现错误消息类似于以下:
错误: 824,Severity: 24,状态: 2 SQL Server 检测到一个逻辑基于一致性的 I / O 错误: 不正确的 pageid (预期的 30:62 ; 实际 0: 0)。
http://support.microsoft.com/kb/909003/zh-cn