症状
在 SQL Server 计算机上,假定您执行下列操作之一:
-
在大型数据库中创建数据库快照。 完成此操作后执行大量数据修改操作或维护操作源数据库中。
-
在镜像数据库上创建数据库快照
-
执行的命令以检查大型数据库的一致性的 DBCC CHECKDB 家族,也在该数据库中执行大量的数据更改。
在这种情况下,请注意根据 SQL Server 错误日志中报告了以下错误 运行 SQL Server 的环境。
Windows Server 2003
操作系统返回的错误 1450年 (存在系统资源不足,无法完成请求的服务。) 到 SQL Server 在偏移量 0x00002a3ef96000 文件中与句柄 0x0000000000000D5C 在写操作过程。这通常是暂时的情况,SQL Server 会不断重试该操作。如果问题仍然存在然后立即必须采取操作来更正它。
Windows Server 2008,Windows Vista 中和更高版本的服务器和客户端操作系统
操作系统返回错误 665 (所请求的操作无法完成由于文件系统限制) 到 SQL Server 在偏移量 0x00002a3ef96000 写在文件中 Sam.mdf:MSSQL_DBCC18
除了这些错误,您可能会发现闩锁超时错误如下所示:
-
等待闩锁时发生超时: 类'DBCC_MULTIOBJECT_SCANNER',id 000000002C61DF40,键入任务 0x00000000038089B8 4: 16,waittime 600,标志 0x1a,拥有 0x0000000006A09828 任务。 继续等待。
-
等待闩锁时发生超时: 类'ACCESS_METHODS_HOBT_COUNT',id 000000002C61DF40,键入任务 0x00000000038089B8 4: 16,waittime 600,标志 0x1a,拥有 0x0000000006A09828 任务。 继续等待。
此外,您可能还注意到阻塞时查看各种动态管理视图 (DMV) (如sys.dm_exec_requests、 sys.dm_os_waiting_tasks等。
原因
如果大量的 ATTRIBUTE_LIST_ENTRY 实例需要维护在 NFTS 的碎片过多的文件,将出现此问题。 在以下知识库文章中解释了此行为:
-
967351 NTFS 卷中的碎片过多的文件不可能增长超过某一大小
这些快照文件的生存期内发生的大量的数据修改时,可以获得到这些级别零碎由 SQL Server 数据库快照创建稀疏文件。
有关完整的 SQL Server 引擎如何使用 NTFS 稀疏文件和备用数据流背景,请参阅以下链接:
解决方案
-
分解成更小的文件大的数据库。 例如,如果您有一个 8 TB 的数据文件可以将它分为八个 1 TB 数据文件。 高级别以下是完成此操作的步骤:
-
将 7 新 1 TB 文件添加到同一文件组中。
-
重建的现有表的聚集的索引,这将自动分配 8 文件中每个表的数据。 如果表没有聚集的索引,然后创建一个,然后放它来完成相同。
-
原 8 TB 文件向下,现在这就是约 12-15%的收缩完整。
-
-
请考虑使用不具有相同的 ATTRIBUTE_LIST_ENTRY 引用限制 NTFS 提供了。 通过使用引用,您必须重新格式化该卷。
-
请考虑对数据库文件所在的卷进行碎片整理。 有关详细信息,请参阅操作系统错误 (665-文件系统限制) 不只是不再 DBCC。
-
知识库文章 967351 中的应用 Windows 修复,然后设置该卷格式使用/L选项来获取大 FRS.
-
3029977 修复: 操作系统错误 665 执行 DBCC CHECKDB 命令包含 SQL Server 2014 columnstore 索引数据库时
-
使用以下性能改进减少 DBCC 检查命令的有效期,因此避免 665 错误:
-
Windows 2008 Server客户应该应用以下修补程序:
-
957065 状态错误信息的 ntfs.sys 驱动程序时,某些应用程序更新 Windows Server 2008 中,或在 Windows Vista 系统中的文件很大:"0xc0000427 STATUS_FILE_SYSTEM_LIMITATION"
-
-
SQL Server 2005 或 SQL Server 2008年的客户应考虑应用于他们所运行的版本适用了下列修补程序:
某些情况下,仍可能会应用这些修补程序后,即使会遇到上面提到的错误。 在这种情况下,可以计算一些以下博客文章中所述的解决方法:
有关详细信息,请参阅以下 Microsoft 资源:
不只是对了 DBCC 操作系统错误 (665 文件系统限制)
当 SQL Server 数据库位于引用的卷的 DBCC CHECKDB 行为