Mik*_*Fal 12 sql-server maintenance sql-server-2008-r2
有时,在我们的索引维护期间,作业会失败并出现 SEV 17 错误,其中无法为正在重建的对象分配足够的空间。数据库布局如下:
Data_file1 PRIMARY 0 growth 0% free Max Size UNLIMITED
Data_file2 PRIMARY 0 growth 0% free Max Size UNLIMITED
Data_file3 PRIMARY 0 growth Less than 1% free Max Size UNLIMITED
Data_file4 PRIMARY 250 MB growth Less than 1% free Max Size UNLIMITED
Run Code Online (Sandbox Code Playgroud)
本质上,4 个数据文件中的 3 个已满且不允许增长,第四个已满且允许增长。文件分布在不同的 LUN 上(原因是杂乱无章)。所以当在线索引重建开始时,我的理解是,如果需要任何额外的空间,它会增长到 Data_file4 并且很好,但它显然试图增长到一个不同的文件,其中不允许增长并且失败。我无法重现此错误,但我想知道是否有人了解发生这种情况的原因。
完整的 SQL Server 版本是 2008 R2 Enterprise, SP2 CU 4 (10.50.4270)。我们使用 Ola Hallengren 的重建脚本,我们在线重建,但没有在tempdb.
我的经验是,它总是会在索引所在的文件组中进行在线重建。它必须映射现有索引并为一份副本保留足够的空间。
仅当重建索引太大而无法容纳映射(副本)时,您才应该收到此错误 - 例如,一次它可能碎片化到足以符合 Ola 脚本的要求,而下一次可能就不行了。
有一篇很棒的文章http://technet.microsoft.com/en-us/library/ms179542(v=sql.105).aspx ,当遇到索引的磁盘空间问题时,我不得不阅读几次。