У меня есть файл базы данных размером 150 ГБ, но используется только 75 ГБ - это потому, что я переместил все индексы (остальные 75 ГБ) в новый файл данных. Я хотел бы освободить хотя бы часть пространства из этого файла данных, но когда я пытаюсь сжать файл, он «Выполняется» на неопределенное время, в конечном итоге отменяется из-за прерывания сети или чего-то еще вне моего контроля (после день бега). Даже использование функции «уменьшить до определенного размера» и указание, что он просто обрезал 10 МБ, кажется, никогда не вернет - он просто сидит, пока процесс не будет прерван.
Есть ли другой способ вернуть себе это пространство, хотя бы понемногу?
РЕДАКТИРОВАТЬ: Кто-то опубликовал ссылку, объясняющую, почему я не должен сжимать свою базу данных. Я понимаю и все равно хочу его уменьшить. Дисковое пространство на этом сервере ограничено, и база данных не будет расширяться снова в это неиспользуемое пространство в течение очень долгого времени - как я уже говорил ранее, я перенес индексы из файла данных, чтобы освободить это пространство, поэтому теперь оно потрачено впустую .
Нет, используя DBCC SHRINKFILE ('filename', target_size)
это правильный способ сделать это.
Если вы хотите сделать это «кусками», вы можете либо установить постепенно уменьшающиеся целевые размеры, либо просто позволить ему работать столько, сколько сможете, прежде чем оно будет отменено.
Несколько комментариев:
DBCC SHRINKFILE ('filename', TRUNCATEONLY)
. Он должен восстановить все пространство, которое уже было освобождено в конце файла (см. Мой предыдущий пункт)В нашей среде мы подошли к нескольким вариантам:
Удачи
Если вы не хотите просто освобождать пространство (что вы специально отказались делать), но настаиваете на попытке сжать базу данных, ожидайте, что это займет очень-очень много времени, и расширение вашего журнала транзакций должно охватывать практически любое пространство вы восстановили из базы данных. В качестве бонуса вы можете наблюдать за тем, как производительность вашей БД после этого повышается. Если Пол Рэндал не может вас убедить (что комментировал JL, но я сделаю репост здесь:Почему не следует сжимать файлы данных что сокращение - ужасная идея, я не уверен, что кто-то сможет. Если повезет, сжатие будет удалено с SQL-сервера (или, по крайней мере, изменено, чтобы оно работало так, как рекомендует Пол) в следующей версии.