Восстановите БД из файла MDF, потеряли LDF, и БД не была чисто отключена - PullRequest
0 голосов
/ 02 апреля 2012

Мой сервер БД dev был отформатирован каким-то администратором без моего ведома.К счастью, у меня был файл .mdf, сохраненный на каком-то другом диске, но файл .ldf был по умолчанию.Поскольку у меня нет резервной копии БД, у меня теперь есть файл .mdf.Я гуглил и нашел разные хитрости для восстановления БД из .mdf файла.Поскольку база данных не была полностью отключена, ни один из приемов не сработал.На моем компьютере установлен SQL Server 2008 с пакетом обновления 2 (SP2).Насколько я помню, потерянным сервером БД был экземпляр SQL Server 2005.Пожалуйста, дайте мне знать, как я могу восстановить свою базу данных.

Уловки, которые я пробовал:

  1. Я попытался прикрепить .mdf из SSMS, удалив элемент файла журнала из базы данных, чтобы прикрепить список.
  2. CREATE DATABASE Monitoring ON (FILENAME = N'D:\Dump\Data\Monitoring.MDF') FOR ATTACH_REBUILD_LOG
  3. sp_attach_single_file_db N'Monitoring', N'D:\Dump\Data\Monitoring_Data.MDF'

Во всем вышесказанном я получил

Неверный оператор DBCC.Проверьте документацию на правильный синтаксис и параметры DBCC.

Затем я попытался DBCC REBUILD_LOG('Monitoring',N'C:\Program Files ..MSSQL\Data\Monitoring_log.ldf'), что привело к:

Неверный оператор DBCC.Проверьте документацию на предмет правильного синтаксиса и опций DBCC ». Error.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Вот некоторые заметки (для SQL 2000), которые могут помочь.Я никогда не пробовал это лично.

  1. В EM создайте БД с тем же именем, что и у оригинала.
  2. Остановите службу SQL (экземпляр).
  3. Скопируйте старый .MDF поверх нового.
  4. Запустите службу (экземпляр).
  5. БД появится в EM как подозрительная.
  6. Запустите диспетчер запросов.
  7. Подключитесь к работающему экземпляру.
  8. Переведите БД в состояние аварийного обхода, выполнив следующие действия:

    sp_configure 'allow', 1 
    go 
    reconfigure with overide. 
    
    update master..sysdatabases 
    set status=32768 
    where dbid=5    --check this ID is for your db 
    
  9. Остановите службу SQL(экземпляр).

  10. Удалите LDF.
  11. Запустите службу SQL (экземпляр).
  12. Выполните в QM следующее:

    select dbid, status, name 
    from master..sysdatabases 
    dbcc rebuild_log ('dbname', 'full path and LDF name') 
    
  13. Вернуть DB из состояния аварийного байпаса путем выполнения в QM:

     update master..sysdatabases 
     set status=16 
     where dbid=5 --Check this ID for your db 
    
  14. Очистить, выполнив следующее в QM:

     sp_configure 'allow', 0 
     go 
     reconfigure with override 
    
1 голос
/ 18 июня 2013

Попробуйте:

ALTER DATABASE EmpDataBase REBUILD LOGON (NAME = $ DatabaseName $, FILENAME = N '$ Path \ DatabaseName.ldf $')

GO

DBCC CHECKDB

ALTER DATABASE $ DatabaseName $ SET MULTI_USER

GO

...