Gelegentlich schlägt der Job während unserer Indexpflege mit einem Fehler vom Typ SEV 17 fehl, bei dem nicht genügend Speicherplatz für das neu erstellte Objekt zugewiesen werden kann. Die Datenbank ist wie folgt aufgebaut:
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
Im Wesentlichen sind 3 der 4 Datendateien voll und dürfen nicht wachsen, die vierte ist voll und darf wachsen. Die Dateien sind auf verschiedene LUNs verteilt (und der Grund dafür ist chaotisch). Wenn die Neuerstellung des Online-Index beginnt, wird nach meinem Verständnis, falls zusätzlicher Speicherplatz benötigt wird, in Data_file4 gewachsen und ist in Ordnung, aber es wird anscheinend versucht, in eine andere Datei zu wachsen, in der Wachstum nicht zulässig ist und fehlschlägt. Ich kann diesen Fehler nicht reproduzieren, habe mich aber gefragt, ob jemand weiß, warum dies passiert.
Die vollständige SQL Server-Version ist 2008 R2 Enterprise, SP2 CU 4 (10.50.4270). Wir verwenden die Neuerstellungsskripte von Ola Hallengren, bei denen wir online neu erstellen, aber keine Änderungen vornehmen tempdb
.
quelle
If max_size is not specified, the file size will increase until the disk is full.
gibt an, dass bei deaktiviertem automatischen Wachstum zwar nicht versucht werden sollte, die Dateien zuzuweisen (A value of 0 indicates that automatic growth is set to off and no additional space is allowed.
), es jedoch möglicherweise einen Fehler gibt, sodass es nicht schaden würde, es zu versuchen, wenn es nicht festgelegt ist.max_size is
Derzeit auf UNLIMITED gesetzt, auch bei denen, die 0 Wachstum haben. Ich untersuche das gerade in meinem Reproduktionstest.Antworten:
Ich habe die Erfahrung gemacht, dass immer eine Online-Neuerstellung in der Dateigruppe durchgeführt wird, auf der sich der Index befindet. Es muss den vorhandenen Index abbilden und genügend Platz für im Wesentlichen eine Kopie bieten.
Sie sollten nur dann eine Fehlermeldung erhalten, wenn ein Index neu erstellt wird, der zu groß ist, um Zuordnungen aufzunehmen (die Kopie) - zum Beispiel, wenn er einmal fragmentiert genug ist, um in Olas Skript zu qualifizieren, und wenn er das nächste Mal nicht ist.
Es gibt einen großartigen Artikel http://technet.microsoft.com/en-us/library/ms179542(v=sql.105).aspx, den ich mehrmals lesen musste, als ich auf Speicherplatzprobleme mit Indizes stieß.
quelle