Восстановление базы данных MS SQL без журнала транзакций (файл *.ldf)

Опишу здесь последовательность действий, с помощью которой можно вернуть работоспособность базы данных MS SQL сервера, в случае отсутствия журнала транзакций. В моем случае файл был, но он был «битый» — полетел рейд (а насчет бекапа Вы уже догадались).
Данная последовательность проверялась на Microsoft SQL Server 2008 R2 (нужно выполнять именно на такой же копии MS SQL SERVER, на какой работала база данных).

  1. Отключаем нашу нерабочую базу данных из ms sql server (в Managment Studio). Мне потребовалось сначала перевести ее в монопольный режим, а потом уже отключить. В некоторых случаях может потребоваться перезагрузка службы sql.
  2. Переименовываем файл данных db_name.mdf в ___db_name.mdf  и db_name.ldf в ___db_name.ldf (на Ваш вкус, главное — не перепутать ничего)
  3. Запускаем сервер БД (если был отключен). В Managment Studio создаем базу данных с таким же именем(например, db_name.mdf), как была, в том же месте, где и была.
  4. Останавливаем сервер БД.
  5. Подменяем файл новой базы нашим переименованным файлом. Переименовываем его обратно.
  6. Стартуем сервер SQL.
  7.  Выполняем:
    go
    sp_configure ‘allow updates’, 1
    reconfigure with override
    go
  8. Выполняем:
    alter database [db_name] set EMERGENCY, SINGLE_USER
  9. Выполняем:
    dbcc checkdb(‘db_name’, REPAIR_ALLOW_DATA_LOSS ) . Если база большая, то выполнение этой команды может занять несколько минут (или десятков минут). Я выполнял эту команду два раза. В первый раз были ошибки, связанные с несоответствием файла журнала транзакций(ldf) файлу БД(mdf). Во втором все прошло без ошибок — следовательно, база восстановилась.
  10. Перезапускаем SQL сервер
  11. Выполняем:
    alter database [db_name] set ONLINE, MULTI_USER
  12. Выполняем:
    Use master
    go
    sp_configure ‘allow updates’, 0
    go
  13. Перезапускаем SQL сервер (на всякий случай, хотя и не обязательно)
    После выполнения этих, не очень сложных, манипуляций ваша база данных должна заработать

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Заказать звонок
+
Жду звонка!