KB3029977 - 修复:在 SQL Server 2014 中对包含列存储索引的数据库执行 DBCC CHECKDB 命令时,OS 错误 665

应用对象
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症状

假设你有一个数据库,其中包含 Microsoft SQL Server 2014 中的大型列存储索引。 当你为数据库执行 DBCC CHECKDB 命令时,你会从 SQL Server 错误日志中收到以下错误消息:

注意

操作系统返回了错误 665 (由于文件系统限制,无法完成请求的操作,) 在文件“<磁盘名称>:\Program Files\Microsoft SQL Server\MSSQL12”中的偏移量0x00004a21310000写入期间SQL Server。MSSQLSERVER\MSSQL\Data\XXXX.mdf“。 SQL Server 错误日志和系统事件日志中的其他消息可能会提供更多详细信息。 这是一种严重的系统级错误情况,威胁数据库完整性,必须立即纠正。 完成完整的数据库一致性检查 (DBCC CHECKDB) 。 此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。

当对具有列存储索引的表执行 DBCC CHECKTABLE 命令时,会收到以下错误消息:

注意

消息 0,级别 11,状态 0,行 0
当前命令上发生严重错误。 如果有结果,应丢弃。

同时,你会在错误日志中收到以下错误消息:

注意

DBCC CHECKTABLE (DomainName\UserName 执行的Table_Name>) 由于错误状态 6 而异常终止。< 运行时间:0 小时 3 分 36 秒。

原因

出现此问题的原因是 SQL Server 列存储索引功能的预取机制存在缺陷。 此缺陷导致数据页不必要地填充快照数据库,从而导致操作系统 665 过早错误。

NoteDBCC CHECKDB 命令会自动在内部创建数据库快照。 手动创建数据库快照并执行使用列存储索引的多个查询时,可能会遇到相同的问题。

解决方法

Service Pack 信息

要解决此问题,请获取 SQL Server 2014 Service Pack 1。

有关 SQL Server 2014 Service Pack 1 (SP1) 的更多信息,请参阅 SQL Server 2014 Service Pack 1 中修复的 bug。

累积更新信息

此问题已首先在 SQL Server 的以下累积更新中修复。

建议:安装 SQL Server 的最新累积更新

SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 建议下载并安装 SQL Server 的最新累积更新:

      

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。