症状
假设你有一个数据库,其中包含 Microsoft SQL Server 2014 中的大型列存储索引。 当执行数据库的 DBCC CHECKDB 命令时,将从 SQL Server 错误日志收到以下错误消息:
在文件 ' <磁盘名称>: \PROGRAM Files\Microsoft sql Server\MSSQL12. 中写入时,操作系统返回 sql Server 的错误665(由于文件系统限制,无法完成请求的操作)MSSQLSERVER\MSSQL\Data\XXXX.mdf'. SQL Server 错误日志和系统事件日志中的其他消息可能提供更多详细信息。 这是威胁数据库完整性的严重系统级错误情况,必须立即更正。 完成完整数据库一致性检查(DBCC CHECKDB)。 此错误可能由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
当对具有列存储索引的表执行 DBCC CHECKTABLE 命令时,将收到以下错误消息:
消息0、级别11、状态0、行0A 当前命令上出现严重错误。 应丢弃结果(如果有)。
同时,您将在错误日志中收到以下错误消息:
由于错误状态6,DomainName\UserName 执行的 DBCC CHECKTABLE (<Table_Name>)被异常终止。 已用时间:0小时3分钟36秒。
原因
出现此问题的原因是 SQL Server 列存储索引功能的预取机制存在缺陷。 此缺陷导致数据页面不必要地填充将导致操作系统过早665错误的快照数据库。Note DBCC CHECKDB 命令会在内部自动创建数据库快照。 手动创建数据库快照和执行使用列存储索引的多个查询时,可能会遇到同样的问题。
解决方案
服务包信息
若要解决此问题,请获取 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 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。