Mam bazę danych SQL Server 2005 dla deweloperów, która jest 30 GB kopii na żywo. Usunęliśmy niektóre dane, które nie są potrzebne w dev, co zmniejsza zużycie miejsca na dane do 20 GB. Mamy więc około 33% niewykorzystane.
Muszę odzyskać miejsce, co pozwoli nam mieć drugi dev DB na serwerze (w oparciu o wersję skróconą); nie mogę jednak odzyskać miejsca, wykonałem następujące czynności:
Początkowy rozmiar pliku
SMS2_Data
to 30 GB.DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY)
śledzony przez
DBCC SHRINKFILE (N'SMS2_Data' , 19500)
Brak przyjemności. Próbowałem wykonać kopię zapasową, tworząc nową bazę danych o niskim rozmiarze początkowym, a następnie przywracając, bez radości, ponieważ rozmiar początkowy zostaje zastąpiony. Próbowałem także:
ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000)
Ten błąd, mówiąc:
MODYFIKACJA PLIKU nie powiodła się. Określony rozmiar jest mniejszy niż aktualny rozmiar.
Próbowałem 20800, a następnie kontynuowałem do 29000 (29 GB) i nadal nie mogę tego zmienić.
Zrobiłem skurcz, a następnie zmieniłem tryb odzyskiwania z FULL
na SIMPLE
i z powrotem. Brak przyjemności.
Myślałem, że ma to związek z niektórymi TEXT
dziedzinami. Mamy około 6 w całym systemie. Więc jako test upuściłem je wszystkie, a następnie zmniejszyłem plik i nadal nie wprowadziłem żadnych zmian.
Pozostała tylko opcja ponownego importowania danych do innej bazy danych. Nie jest to praktyczne, ponieważ należałoby to zrobić na bazie danych na żywo, która niesie ze sobą zbyt duże ryzyko. Częściowo regularnie pobieramy kopię bazy danych na żywo i zastępujemy program / test. Mamy około 500 stołów. Chciałbym zrobić to w sposób, który nie miałby ryzyka eksportu danych do nowej bazy danych.
Próbowałem przenieść dane do innego pliku i skopiowałem wszystkie oprócz 5% danych. To skłoniło mnie do upuszczenia wszystkich kolumn tekstowych.
Serwer działa w trybie zgodności 90, ale jest to SP2. Zrobiłem teraz 3 razy: reindeksuj wszystkie tabele, kopię zapasową bazy danych, zmniejsz plik, zmniejsz bazę danych. Wciąż nie ma radości.
EXECUTE sp_spaceused
zwroty:
database_name database_size unallocated space
SMS2Tests 31453.94 MB 13903.16 MB
reserved data index_size unused
16545568 KB 10602264 KB 4254360 KB 1688944 KB