Czasami podczas konserwacji indeksu zadanie zakończy się niepowodzeniem z błędem SEV 17, w którym nie można przydzielić wystarczającej ilości miejsca dla obiektu, który odbudowuje. Baza danych ma następującą strukturę:
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
Zasadniczo 3 z 4 plików danych są pełne i nie mogą rosnąć, czwarty jest pełny i może rosnąć. Pliki są rozłożone na różne jednostki LUN (i powód, dla którego jest bałagan). Tak więc, kiedy rozpoczyna się przebudowa indeksu online, rozumiem, że jeśli potrzebna będzie jakakolwiek dodatkowa przestrzeń, wzrośnie do pliku_pliku danych4 i będzie w porządku, ale najwyraźniej próbuje rozwinąć się do innego pliku, w którym wzrost nie jest dozwolony i kończy się niepowodzeniem. Nie jestem w stanie odtworzyć tego błędu, ale zastanawiałem się, czy ktoś miał wgląd w to, dlaczego tak się dzieje.
Pełna wersja SQL Server to 2008 R2 Enterprise, SP2 CU 4 (10.50.4270). Używamy skryptów przebudowy Oli Hallengren, w których przebudowujemy online, ale nic w tym rodzaju tempdb
.
max_size is
obecnie ustawiony na NIEOGRANICZONY, nawet na tych, które mają 0 wzrost. Badam to teraz w moim teście repro.
If max_size is not specified, the file size will increase until the disk is full.
Przyznane, jeśli automatyczne powiększanie jest wyłączone, nie powinno to być próbą alokacji z tych plików (A value of 0 indicates that automatic growth is set to off and no additional space is allowed.
), ale może wystąpić błąd, więc nie zaszkodzi spróbować, jeśli nie zostanie ustawiony.