У меня есть база данных разработчика SQL Server 2005, которая является 30-гигабайтной копией live. Мы удалили некоторые данные, которые не нужны в dev, что приводит к уменьшению занимаемого файлового пространства до 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