Назад | Перейти на главную страницу

Для восстановления SQL Server .bak требуется слишком много места

Я пытаюсь восстановить резервную копию SQL Server 2008 (стандартная версия) на моем компьютере разработчика, используя производственную базу данных. При этом я получаю сообщение об ошибке «Недостаточно свободного места». SQL Server утверждает, что ему нужно 43 ГБ свободного места для восстановления моей базы данных, но файл .bak занимает всего 4,5 ГБ! Конечно, я дам ему немного места для работы, но 10-кратное фактическое используемое пространство кажется немного чрезмерным. Я не сжимаю эту базу данных (когда я сжимаю файл .bak, он уменьшается до 0,8 ГБ).

Могу ли я что-нибудь сделать с исходной БД, чтобы ее можно было установить в меньшем рабочем пространстве?

Вероятно, ваш файл журнала транзакций ... резервная копия захочет создать такой же большой, как был в оригинале.

Лучше всего в этом случае сжать файл журнала перед выполнением резервного копирования.

Другой вариант за пределами резервного копирования, если вы можете обойтись без него, - это отсоединить, а затем скопировать файл базы данных и повторно присоединить, затем SQL создаст новый файл журнала транзакций с размером по умолчанию, например, 1 МБ.

43 ГБ - это совокупный размер (скорее всего) файлов MDF и LDF.

Резервное копирование берет только использованные страницы в файлах, поэтому это вполне возможно, особенно если у вас сильная фрагментация таблиц / индексов, или вы никогда не управляли своими файлами журналов или никогда не выполняли обслуживание индекса.

Fix: больше места на диске (конечно!). Попробуйте выполнить восстановление в сжатую папку NTFS, внешний USB-накопитель / ручку или другое устройство, чтобы создать дополнительное временное хранилище, отсортировать данные, снова выполнить резервное копирование, восстановить "в обычном режиме"