Ocasionalmente durante nuestro mantenimiento de índice, el trabajo fallará con un error SEV 17 donde no se puede asignar suficiente espacio para el objeto que está reconstruyendo. La base de datos se presenta como tal:
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
Esencialmente, 3 de los 4 archivos de datos están llenos y no pueden crecer, el cuarto está lleno y puede crecer. Los archivos están distribuidos en diferentes LUN (y la razón de por qué es desordenada). Entonces, cuando comienza la reconstrucción del índice en línea, entiendo que si se necesita espacio adicional, crecerá en Data_file4 y estará bien, pero aparentemente está tratando de crecer en un archivo diferente donde el crecimiento no está permitido y falla. No puedo reproducir este error, pero me preguntaba si alguien tenía idea de por qué sucede esto.
La versión completa de SQL Server es 2008 R2 Enterprise, SP2 CU 4 (10.50.4270). Usamos los scripts de reconstrucción de Ola Hallengren, donde reconstruimos en línea pero no los clasificamos tempdb
.
fuente
If max_size is not specified, the file size will increase until the disk is full.
Concedido, si el crecimiento automático está desactivado, eso no debería ser intentar asignar desde esos archivos (A value of 0 indicates that automatic growth is set to off and no additional space is allowed.
), pero puede haber un error, por lo que no estaría de más intentarlo si no está configurado.max_size is
actualmente establecido en ILIMITADO, incluso en los que tienen un crecimiento de 0. Estoy investigando esto en mi prueba de repro en este momento.Respuestas:
Mi experiencia es que siempre va a hacer una reconstrucción en línea en el grupo de archivos en el que vive el índice. Tiene que mapear el índice existente y mantener suficiente espacio para, esencialmente, una copia.
Solo debería recibir el error cuando se reconstruye un índice que es demasiado grande para contener asignaciones (la copia); por ejemplo, una vez puede estar lo suficientemente fragmentado como para calificar en el script de Ola y la próxima vez puede que no lo sea.
Hay un gran artículo http://technet.microsoft.com/en-us/library/ms179542(v=sql.105).aspx que tuve que leer varias veces cuando me encontré con problemas de espacio en disco con índices.
fuente