Parfois, pendant notre maintenance d'index, le travail échoue avec une erreur SEV 17 où suffisamment d'espace ne peut pas être alloué pour l'objet qu'il reconstruit. La base de données est présentée comme telle:
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
Essentiellement, 3 des 4 fichiers de données sont pleins et ne peuvent pas croître, le quatrième est plein et peut croître. Les fichiers sont répartis sur différents LUN (et la raison pour laquelle est en désordre). Donc, lorsque la reconstruction de l'index en ligne commence, je comprends que si un espace supplémentaire est nécessaire, il se développera en Data_file4 et ira bien, mais il essaie apparemment de se développer dans un fichier différent où la croissance n'est pas autorisée et échoue. Je ne peux pas reproduire cette erreur, mais je me demandais si quelqu'un avait une idée de pourquoi cela se produit.
La version complète de SQL Server est 2008 R2 Enterprise, SP2 CU 4 (10.50.4270). Nous utilisons les scripts de reconstruction d'Ola Hallengren, où nous reconstruisons en ligne mais sans tri tempdb
.
max_size is
actuellement défini sur UNLIMITED, même sur ceux qui ont une croissance de 0. J'étudie cela dans mon test de repro en ce moment.
If max_size is not specified, the file size will increase until the disk is full.
si la croissance automatique est désactivée, cela ne devrait pas essayer d'allouer à partir de ces fichiers (A value of 0 indicates that automatic growth is set to off and no additional space is allowed.
), mais il peut y avoir un bogue, donc cela ne ferait pas de mal de l'essayer s'il n'est pas défini.