Zostały mi tylko 2 GB, więc muszę usunąć tę tabelę historii. Ta tabela jest teraz pusta, ale miejsce na dysku bazy danych nie zostało zwolnione. Plik bazy danych ma 320 GB.
sql-server
sql-server-2012
truncate
Lucas Rodrigues Sena
źródło
źródło
Odpowiedzi:
Jeśli odwołujesz się do faktycznego zużycia pliku bazy danych na woluminie, SQL Server nie obsługuje tego automatycznie . Tylko dlatego, że usunąłeś dane z bazy danych, nie oznacza to, że pliki bazy danych zostaną zmniejszone, aby pasowały tylko do istniejących danych.
To, czego byś szukał, gdybyś musiał odzyskać miejsce na woluminie, zmniejszyłby konkretny plik
DBCC SHRINKFILE
. Warto zwrócić uwagę na kilka najlepszych praktyk, zgodnie z tą dokumentacją:Uwaga:
Robiąc to, z pewnością należy wziąć pod uwagę kilka rzeczy i polecam zajrzeć na blogu Paula Randala na temat tego, co dzieje się po wykonaniu tej operacji.
Pierwszym krokiem byłoby na pewno sprawdzenie, ile miejsca i wolnego miejsca faktycznie można zastąpić, a także wykorzystanego miejsca w plikach:
źródło
Jest to normalne zachowanie podczas obcinania tabeli i polegające na usunięciu ponad 128 zakresów w trybie Per Books Online
Trzeba będzie poczekać i oczywiście trzeba ręcznie zmniejszyć plik, aby odzyskać miejsce, warto również wspomnieć, że zmniejszanie powoduje logiczną fragmentację i należy tego unikać, chyba że twoja potrzeba jest poważna. Trzeba by się zastanowić, jak zachować równowagę między kurczeniem się a fragmentacją. Lepiej jest zadać sobie pytanie, czy zmniejszenie rzeczywiście rozwiązałoby problem, biorąc pod uwagę scenariusz, w którym dane i tak znów wzrosną.
Użyj poniższego zapytania, aby sprawdzić, ile wolnego miejsca jest w bazie danych
źródło
Oprócz odpowiedzi Toma i Shanky'ego, jeśli twoja baza danych zawiera dane LOB / BLOB, DBCC SHRINKFILE może nie działać. W takim przypadku masz dwie opcje, w zależności od tego, czy możesz przełączyć bazę danych w tryb offline, czy nie. Jeśli możesz przełączyć bazę danych w tryb offline, musisz skopiować dane i skopiować je z powrotem, aby usunąć puste miejsce. Możesz to zrobić, wykonując jedną z następujących czynności:
Jeśli nie możesz przełączyć bazy danych w tryb offline, możesz użyć komendy DBCC SHRINKFILE z opcją EMPTYFILE .
Szczegóły dotyczące kopii offline: http://support.microsoft.com/kb/324432/en-us
Bieżące informacje dla opcji EMPTYFILE http://msdn.microsoft.com/en-us/library/ms189493(v=sql.105).aspx
źródło