Die Neuerstellung des SQL Server 2008 R2-Index schlägt mit dem Schweregrad 17 fehl

12

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.

Mike Fal
quelle
Ist die maximale Dateigröße angegeben? Die Dokumentation 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.
Jon Seigel
max_size isDerzeit auf UNLIMITED gesetzt, auch bei denen, die 0 Wachstum haben. Ich untersuche das gerade in meinem Reproduktionstest.
Mike Fal
Protokollieren Sie die Ergebnisse? Wenn Sie historische Aufzeichnungen führen, tritt der Fehler bei jedem Fehlschlagen im selben Index auf?
Cougar9000
Wie viele Seiten umfasst der betreffende Index?
Mark Wilkinson
Ist dies auch ein vom Skript generierter Fehler oder ein tatsächlicher SQL Server-Fehler? Ich frage, weil ich mich frage, ob Sie möglicherweise ein Transaktionsprotokoll-Größenlimit anstelle eines Datendateigrößenlimits erreichen und das Skript den Fehler falsch behandelt.
Mark Wilkinson

Antworten:

1

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ß.

rottengeek
quelle