Зачем нам нужны файлы LDF вместе с файлами MDF? - PullRequest
7 голосов
/ 10 мая 2011

Что произойдет, если я удалю файл .ldf, который находится в той же папке, что и мой файл .mdf?

Ответы [ 4 ]

19 голосов
/ 10 мая 2011

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

Вы не сможете удалить его во время работы службы сервера SQL. Вы можете отсоединить базу данных, удалить файл журнала (LDF) и заново присоединить файл данных (MDF). Однако он просто создаст новый файл журнала. Вы действительно не должны удалять это. Если он становится слишком большим, вам нужно будет управлять им, обычно через процесс резервного копирования.

4 голосов
/ 10 мая 2011

База данных будет помечена как подозрительная при перезапуске SQL Server и недоступна без каких-либо подробных действий по ее восстановлению.

LDF является важной частью базы данных: вам нужно этофайл.

Вы, конечно, можете игнорировать нас, удалить его и убедиться в этом ...

1 голос
/ 10 мая 2011

Как уже указывалось, файл .LDF имеет решающее значение для БД, и без него БД не будет доступна..LDF может быть удален, только если БД находится в автономном режиме или отключена, или служба SQL остановлена.

Если предположить, что один из приведенных выше 3 сценариев был верным, и вы удалили файл .LDF, то БД будетбудьте подозрительны, когда сервер SQL будет перезапущен.Если база данных была отключена и вы пытаетесь вернуть ее в оперативный режим, она выдаст ошибку:

File activation failure. The physical file name "<<filename.ldf>>" may be incorrect.
Msg 945, Level 14, State 2, Line 1
Database '<<DB Name>>' cannot be opened due to inaccessible files or insufficient
memory or disk space.  See the SQL Server errorlog for details.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.

Исправить эту ошибку довольно просто, но вам нужно будет удалить все метаданные, относящиеся кБД из системных файлов.Самый простой способ сделать это - сбросить БД.Вот что вам нужно сделать.

  • Перевести БД в автономный режим или отсоединить БД
  • Сделайте копию файла .MDF в каталог резервного копирования
  • Теперь удалите базу данных (вам, конечно, придется заново присоединять базу данных, если вы отсоединились)
  • Скопируйте .MDF обратно в исходное местоположение

После этих шагов запуститеследующее:

SP_ATTACH_SINGLE_FILE_DB @dbname='<<DBName>>' ,@physname=N'<<filepath\filename.MDF>>'

Это должно вернуть вам следующее:

File activation failure. The physical file name "<<Filepath\filename.ldf>>" 
may be incorrect.
New log file '<<Filepath\filename.ldf>>' was created.

Это вернет вашу БД в рабочее состояние.

Вопрос за миллион долларов все еще остается - зачем кому-то удалять файл .LDF ???

Raj

0 голосов
/ 13 февраля 2013

Лучший способ сохранить размер .LDF file в чеке:

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