Восстановите bak-файл в меньшие файлы базы данных mdf и ldf


11

У меня есть устаревшая база данных, чье кошмарное отсутствие дизайна я не буду описывать, но файлы на сервере (относительно) огромны. У меня есть:

MyDatabase.mdf: 24,8
ГБ MyDatabase.ldf: 114,6 ГБ

Каждую ночь эта база данных копируется в файл .bak и отправляется на наш сервер отчетов, где она восстанавливается. Файл .bak намного меньше - всего 1,8 ГБ.

Однако при попытке восстановить его на сервере отчетов происходит сбой из-за недостатка места. На сервере имеется около 100 ГБ свободного места, и он пытается съесть все 139,4 ГБ, которые файлы использовали на исходном сервере. Если мои знания о сжатии не являются ужасно неправильными, я вполне уверен, что файл объемом 1,8 ГБ фактически не расширяется на 7400%.

Мой вопрос: есть ли способ сказать SQL Server восстановить этот файл резервной копии без предварительного резервирования этого пространства? Меня не волнует ни один из журналов; Мне просто нужны данные, чтобы быть там. Я понимаю базы данных с точки зрения разработки и схемы, но я никоим образом не являюсь администратором.

Это на SQL Server 2008 R2. Спасибо за любую помощь или предложения.

Ответы:


11

Резервная копия содержит две части информации:

  • расположение файлов базы данных и метаданных, т.е. RESTORE FILELISTONLY ...
  • фактические данные

Фактические данные в резервной копии - те 1,8 ГБ. Но метаданные описывают расположение файлов как на исходном производственном сервере. Хотя это выглядит как сжатие, это не фактическое сжатие. Это просто метаданные против контента. проблема в том, что во время RESTORE подотчетная машина создает макет, как описано в метаданных, поэтому 114,6 ГБ + 24,8 ГБ. Теперь реальный вопрос: можете ли вы восстановить его без воссоздания оригинальной структуры файла БД? Нет. Однако у вашей проблемы есть и другие решения: вернуть оригинальную БД обратно. Сокращение Журнала транзакций охватывает шаги, которые вам нужно сделать, так как журнал является вашей основной проблемой. Далее я бы развернул доставку журналов вместо резервного копирования / восстановления.


Спасибо; сжатие журнала транзакций сделало свое дело отлично.
eouw0o83hf

1
Доставка журналов вместо резервных копий журналов ??
Томас Стрингер

4
@Shark: доставка журналов вместо полных резервных копий, как средство доставки БД на отчетную машину.
Ремус Русану

О, хорошо, я полностью пропустил эту часть вопроса. Спасибо за разъяснения!!
Томас Стрингер

0

SQL Server 2012 позволяет использовать только файл базы данных mdf и прикрепить его к SQL Server: http://msdn.microsoft.com/en-us/library/ms174385.aspx . SQL Server создает новый файл PDF, в котором вы можете указать размер. Затем:

  • используйте Простую модель восстановления, чтобы предотвратить рост вашего файла журнала, или
  • используйте модель полного восстановления и регулярно создавайте резервные копии журнала транзакций. Это также будет препятствовать росту файла журнала.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.