2012-04-02 25 views
0

Mein dev DB-Server wurde von einigen Admin ohne mein Wissen formatiert. Zum Glück hatte ich .mdf-Datei in einem anderen Laufwerk gespeichert, aber .ldf war an seinem Standardort. Da ich kein DB-Backup habe, habe ich jetzt eine .mdf-Datei. Ich habe gegoogelt und verschiedene Tricks gefunden, um DB aus der .mdf-Datei wiederherzustellen. Da die Datenbank nicht sauber heruntergefahren wurde, hat keiner der Tricks funktioniert. Ich habe SQL Server 2008 SP2 auf meinem Computer installiert. Wie ich mich erinnere verlorener DB-Server war SQL Server 2005-Instanz. Bitte lassen Sie mich wissen, wie ich meine Datenbank wiederherstellen könnte.Restore DB aus MDF-Datei, verloren LDF und DB wurde nicht sauber heruntergefahren

Tricks Ich habe versucht:

  1. I durch Entfernen der Protokolldatei Artikel aus der Datenbank die MDF- von SSMS anhängen wollte Liste zu befestigen.
  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'

In allen oben Ich habe

Falsche DBCC-Anweisung. Überprüfen Sie die Dokumentation auf die richtige DBCC-Syntax und die richtigen Optionen.

Dann habe ich versucht DBCC REBUILD_LOG('Monitoring',N'C:\Program Files ..MSSQL\Data\Monitoring_log.ldf'), die in Folge:

Falsche DBCC-Anweisung. Überprüfen Sie die Dokumentation auf die richtige DBCC-Syntax und Optionen. "Fehler.

+0

IMO müssen Sie einige 3rd-Party-sQL/MDF- Recovery-Tool. Ich habe noch immer einen immer brauchbaren Hinweis oder Trick gesehen, der es erlaubt, eine solche MDF-Datei nur mit SQL-Optionen wiederherzustellen. Ich habe sogar die MDF-Datei im Hex-Editor geändert, um den LDF-Ort zu ändern (um ihn auf ldf zu räumen); Kein Erfolg. – Arvo

+0

Sie werden eine bessere Antwort auf der dba Seite als hier bekommen, aber Sie müssen die "Tricks" einschließen, die Sie bereits versucht haben und was das Ergebnis von jedem war (zum Beispiel die spezifischen Fehlermeldungen). – Pondlife

+0

1. Ich habe versucht, das MDF von SSMS anfügen, indem Sie das Protokolldateielement aus der Datenbank entfernen, um Liste anzufügen. 2. CREATE DATABASE Überwachung EIN (DATEINAME = N'D: \ Dump \ Data \ Monitoring.MDF ') FÜR ATTACH_REBUILD_LOG 3. sp_attach_single_file_db N'Monitoring', N'D: \ Dump \ Data \ Monitoring_Data.MDF ' In alles oben habe ich "Falsche DBCC-Anweisung. Überprüfen Sie die Dokumentation für die richtige DBCC-Syntax und Optionen. " Dann versuchte ich DBCC REBUILD_LOG ('Überwachung', N'C: \ Programme ..MSSQL \ Data \ Monitoring_log.ldf '), die in" falsche DBCC-Anweisung. Überprüfen Sie die Dokumentation für die richtige DBCC-Syntax und die Optionen. " –

Antwort

2

Hier sind einige Hinweise (für SQL 2000), die helfen könnten. Ich habe das nie persönlich ausprobiert.

  1. In EM erstellen Sie einen DB mit dem gleichen Namen wie das Original.
  2. Stoppen Sie den SQL-Dienst (Instanz).
  3. Kopieren Sie die alte .MDF über die neue.
  4. Starten Sie den Dienst (Instanz).
  5. DB wird in EM als verdächtig angezeigt.
  6. Starten Sie den Query Manager.
  7. Stellen Sie eine Verbindung zur laufenden Instanz her.
  8. Setzen Sie die DB in Notfall-Bypass-Status durch folgende Maßnahmen:

    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. Stopp, um den SQL-Dienst (Beispiel).

  10. Löschen Sie die LDF.
  11. Starten Sie den SQL-Dienst (Instanz).
  12. Führen Sie die folgende in QM:

    select dbid, status, name 
    from master..sysdatabases 
    dbcc rebuild_log ('dbname', 'full path and LDF name') 
    
  13. Revert DB von der Notfall Bypass-Status durch executng in QM:

    update master..sysdatabases 
    set status=16 
    where dbid=5 --Check this ID for your db 
    
  14. Cleanup durch die folgende in QM ausführt:

    sp_configure 'allow', 0 
    go 
    reconfigure with override 
    
+0

" dbcc rebuild_log "wird in SQL Server 2008 nicht unterstützt. Ich habe" Falsches DBCC Erklärung. Überprüfen Sie die Dokumentation für die richtige DBCC-Syntax und die Optionen. "Message. –

+1

Ja, es implementiert durch' ALTER DATABASE' Anweisung jetzt: 'ALTER DATABASE dbname REBUILD LOG ON (NAME = dbname_Log, FILENAME = 'vollständiger Pfad und LDF-Name')' – wqw

1

Try This:

ALTER DATABASE EmpDataBase REBUILD LOG ON (NAME = $ $ Database, FILE-NAME = N '$ Path \ DatabaseName.ldf $')

GO

DBCC CHECKDB

ALTER DATABASE $ $ SET Database MULTI_USER

GO