Восстановление БД SQL Server без журнала транзакций

есть ли способ, учитывая SQL Server 2008 .файл bak, чтобы восстановить базу данных из.файл bak без журнала транзакций?

причина, по которой я спрашиваю, заключается в том, что размер файла журнала транзакций этой базы данных огромен - превышает дисковое пространство, которое у меня есть. У меня нет интереса к журналу транзакций и нет интереса к незавершенным транзакциям, поэтому обычно я просто сжимаю журнал до нуля после восстановления базы данных. Но это не помогает, когда я во-первых, недостаточно места на диске для создания журнала. Мне нужен способ, чтобы указать SQL Server, чтобы восстановить только данные .файл bak, а не журнал транзакций. Есть ли способ сделать это?

обратите внимание, что у меня нет контроля над генерацией .файл BAK - это из внешнего источника. Таким образом, сокращение журнала транзакций перед созданием .файл bak не является опцией.

5 ответов


Это действительно вопрос для сайтов ServerFault или DBA, но короткий ответ-Нет, вы можете восстановить только полный .файл bak (оставляя в стороне "экзотические" сценарии, такие как файловая группа или частичное восстановление). Ты не говоришь, что "огромные" средства, но дисковое пространство дешево; если действительно не вариант, то вам нужно найти альтернативный способ получения данных из внешнего источника.


журнал транзакций является неотъемлемой частью резервной копии. Вы не можете сказать SQL Server игнорировать журнал транзакций, потому что нет способа, скажем, восстановить и сжать файл журнала транзакций одновременно. Тем не менее, вы можете взглянуть на сообщение DBA взломать процесс, хотя это не рекомендуется вообще

в качестве альтернативы вы можете попробовать некоторые сторонние инструменты для восстановления, особенно виртуальный процесс восстановления, который может сэкономить много места и времени. Проверьте Восстановление ApexSQL, Виртуальное Восстановление RedGate, Виртуальная База Данных Idera.

отказ от ответственности: я работаю для ApexSQL в качестве инженера поддержки


нет, требуется журнал транзакций.

Вариант 1:

можно восстановить его на машине, на которой у вас достаточно места. Затем на восстановленной копии измените ведение журнала на bulk logged или simple, сожмите журналы, выполните еще одну операцию резервного копирования на этой новой копии, а затем используйте ее для восстановления на целевой машине с теперь гораздо меньшим журналом транзакций.

2:

кроме того, возможно, контакт во внешнем источнике может сжать журнал транзакций перед отправкой его вам (это может не сработать, если журнал большой из-за большого количества больших транзакций).

документы по команде для сжатия файла журнала являются здесь.


Это может не работать, так как у вас нет контроля над генерацией .файл bak, но если вы можете убедить свой источник отсоединить базу данных, а затем отправить вам копию .файл mdf напрямую, вы можете прикрепить .МДФ и ваш сервер автоматически создает новый пустой файл журнала транзакций.

см. sp_detach_db и sp_attach_db (или создайте Database database_name для ATTACH в зависимости от версии sql server).


Я знаю, что это старый поток сейчас, но я наткнулся на него, когда у меня были проблемы с повреждением журнала транзакций, вот как я обошел его без потери данных(у меня было время простоя!)

вот что я сделал:--

остановить службу экземпляра sql server сделайте копию базы данных .mdf файл И.ldf-файл (если у вас есть .файл NDF, понял, как хорошо!) - Просто чтобы быть уверенным, вы всегда можете положить их обратно, если он не работает вы.

перезапустить службу.

войдите в SQL management studio и измените режим базы данных на простой, затем сделайте полную резервную копию.

измените тип базы данных снова и снова сделайте полную резервную копию, затем сделайте резервную копию журнала транзакций.

отсоединить базу данных.

щелкните правой кнопкой мыши по базам данных и нажмите "Восстановить", выберите имя базы данных из выпадающего списка, выберите более позднюю полную резервную копию базы данных (не ту, которая была взята из простого режима), а также выберите резервную копию журнала транзакций.

нажмите "Восстановить", и он должен вернуть все это без каких-либо повреждений в файлах журнала.

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