У мене є база даних розробників SQL-сервера 2005 року, яка представляє 30 ГБ копії прямої трансляції. Ми видалили деякі дані, які не потрібні у програмі розробки, що знижує кількість використаних файлів даних до 20 Гб. Таким чином, у нас є близько 33% невикористаних.
Мені потрібно повернути простір, який дозволить нам мати другий БД розробки на сервері (на основі скороченої версії); однак я не можу повернути пробіл, я зробив наступне:
Початковий розмір файлу
SMS2_Data
- 30 Гб.DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY)
слідом за ним
DBCC SHRINKFILE (N'SMS2_Data' , 19500)
Ніякої радості. Я спробував створити резервну копію, створивши нову БД з низьким початковим розміром, потім відновивши, не радість, оскільки початковий розмір буде перезаписаний. Також спробували:
ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000)
Це помилилося, сказавши:
Не вдалося змінити файл. Зазначений розмір менше, ніж поточний розмір.
Я спробував 20800, а потім продовжував іти до 29000 (29 Гб), і це все ще не дозволить мені змінити його.
Зробили усадочною потім змінив режим відновлення з FULL
до SIMPLE
і назад. Ніякої радості.
Я думав, що це стосується якихось TEXT
полів. У нас близько 6 по всій системі. Тож як тест я скинув їх усіх, а потім зменшив файл і все ще не змінився.
Залишився єдиний варіант - повторно імпортувати дані до іншої БД. Це не практично, так як це потрібно було б зробити на прямій БД, що несе в собі занадто великий ризик. Ми напіврегулярно захоплюємо копію живого БД і перезаписуємо dev / test. У нас є щось на кшталт 500 столів. Мені б хотілося, щоб це було зроблено так, щоб не було ризику експорту даних до нової БД.
Я спробував перемістити дані в інший файл, і він скопіював усі, крім 5% даних. Це те, що спонукає мене спробувати скинути всі текстові стовпці.
Сервер перебуває в режимі сумісності 90, але є SP2. Зараз я робив наступні 3 рази: перевстановлюю всі таблиці, створює резервну базу даних, зменшує файл, зменшує базу даних. Ще немає радості.
EXECUTE sp_spaceused
повертає:
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