SQL Server 2008 R2索引重建失败,严重性为17


12

有时,在进行索引维护期间,作业将因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

本质上,4个数据文件中的3个已满并且不允许增长,第四个已满并且允许增长。文件分散在不同的LUN上(以及混乱的原因)。因此,当我开始进行联机索引重建时,据我了解,如果需要任何额外空间,它将增长到Data_file4中并且很好,但是显然它正在尝试增长到不允许增长且失败的其他文件中。我无法重现此错误,但我想知道是否有人了解为什么会发生这种情况。

完整的SQL Server版本是2008 R2 Enterprise SP2 CU 4(10.50.4270)。我们使用Ola Hallengren的重建脚本,在此我们进行在线重建,但没有排序tempdb


是否指定了最大文件大小?文档说已If max_size is not specified, the file size will increase until the disk is full.授予,如果关闭了自动增长功能,则不应尝试从这些文件(A value of 0 indicates that automatic growth is set to off and no additional space is allowed.)进行分配,但是可能会有错误,因此如果未设置尝试,尝试一下也不会有任何伤害。
乔恩·塞格尔

max_size is当前设置为UNLIMITED,即使增长率为0。我正在我的repro测试中对此进行调查。
Mike Fal 2014年

您正在记录结果吗?如果保留历史记录,则每次错误都会在同一索引上发生该错误吗?
Cougar9000 2014年

该索引有多少页?
Mark Wilkinson

另外,这是脚本生成的错误还是实际的SQL Server错误?我问是因为我想知道您是否正在达到事务日志大小限制,而不是数据文件大小限制,并且脚本正在错误地处理错误。
Mark Wilkinson

Answers:


1

我的经验是,它将始终在索引所在的文件组中进行联机重建。它必须映射现有索引并为一个副本保留足够的空间。

仅当重建了一个太大而无法容纳映射(副本)的索引时,您才应该得到该错误-例如,一次索引可能碎片化得足以容纳Ola的脚本,而下一次索引可能碎片化了。

有一篇很棒的文章http://technet.microsoft.com/zh-cn/library/ms179542(v=sql.105).aspx ,当遇到带有索引的磁盘空间问题时,我必须阅读几次。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.