Occasionalmente durante la nostra manutenzione dell'indice, il lavoro fallirà con un errore SEV 17 in cui non è possibile allocare spazio sufficiente per l'oggetto che sta ricostruendo. Il database è strutturato come tale:
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
In sostanza, 3 dei 4 file di dati sono pieni e non possono crescere, il quarto è pieno e può crescere. I file sono distribuiti su diversi LUN (e il motivo per cui è disordinato). Quindi, quando inizia la ricostruzione dell'indice online, capisco che se è necessario spazio aggiuntivo, diventerà Data_file4 e andrà bene, ma a quanto pare sta cercando di crescere in un file diverso in cui la crescita non è consentita e non riesce. Non riesco a riprodurre questo errore, ma mi chiedevo se qualcuno avesse avuto un'idea del perché ciò accada.
La versione completa di SQL Server è 2008 R2 Enterprise, SP2 CU 4 (10.50.4270). Usiamo gli script di ricostruzione di Ola Hallengren, dove ricostruiamo online ma non ci riordiniamo tempdb
.
max_size is
attualmente impostato su ILLIMITATO, anche su quelli con crescita 0. Sto indagando su questo nel mio test di riproduzione in questo momento.
If max_size is not specified, the file size will increase until the disk is full.
, se la crescita automatica è disattivata, non dovrebbe tentare di allocare da quei file (A value of 0 indicates that automatic growth is set to off and no additional space is allowed.
), ma potrebbe esserci un bug, quindi non farebbe male a provarlo se non è impostato.