2013-07-29 16 views
8

Ich habe eine Bak-Datei (das ist eine Backup-Datenbank-Datei für einen SQL-Server Express 2005 MDF-Datei) und ich sollte die MDF-Datei erhalten, so dass ich an seinen Tabellen arbeiten kann, wie kann ich die ursprüngliche MDF-Datei von dieser bak-Datei erhalten? Ich benutze Visual Studio 2012, ist es notwendig, Management Studio zu haben? Ich habe versucht, diese bak-Datei zu einer leeren Datenbank in einem anderen System mit Sql Server Express Management Studio 2008 wiederherzustellen, aber es sagt, dass Datenbanken nicht übereinstimmen, was schief läuft?Original-MDF-Datei aus Bak-Datei wiederherstellen

Antwort

5

Wenn Sie eine leere Datenbank erstellt haben, müssen Sie den Parameter WITH REPLACE angeben, um dies mit der Sicherung zu überschreiben.

Sie müssen möglicherweise auch den MOVE-Parameter angeben, um die Dateien an den richtigen Stellen zu platzieren.

sollten Sie in der Lage sein, ganz einfach auf diese Optionen in der GUI zu finden, wenn die Wiederherstellung zu tun, oder alternativ können Sie Skript, um es aus durch die Referenz hier mit:

How to: Restore a Database to a New Location and Name (Transact-SQL)

+0

danke, aber wie kann ich diese Aktion über Code durchführen? Wo sollte ich das in Ihrem Link bereitgestellte Codebeispiel ausführen? Ich sollte ein SQLCommand-Objekt erstellen und diese Skripts ausführen? –

+0

Sie können das tun, oder Sie können einfach die Befehle in SQL-Management-Studio ausführen – steoleary

11

Beachten Sie, dass eine Wiederherstellung Die Datenbanksicherungsdatei enthält nicht die ursprünglichen MDF- (und LDF-) Dateien. Die einzige Möglichkeit, die ursprüngliche MDF-Datei zu erhalten, besteht darin, sie zu kopieren. Sie können das T-SQL ausführen, das von Stoleary in Visual Studio vorgeschlagen wurde. Weitere Informationen finden Sie hier: How to: Run SQL Scripts in Solution Explorer. Sie können dies auch in SQL Server Management Studio tun.

Die leere Datenbank, die Sie erstellt haben, hilft nicht viel, es sei denn, Sie möchten die Sicherung damit synchronisieren. Aber dafür benötigen Sie ein Tool von Drittanbietern

Zuerst führen Sie die folgenden, um herauszufinden, die logischen Dateinamen in Ihrem Backup. Dieses Beispiel ist für die Sicherung namens TestFull.bak in E gespeichert: \ Test

RESTORE FILELISTONLY 
FROM DISK = 'E:\Test\TestFull.bak' 
GO 

enter image description here

Die logischen Namen sollten im nächsten Skript verwendet werden. Aktualisieren Sie auch die verwendeten Pfade und Namen

RESTORE DATABASE YourDB 
FROM DISK = 'E:\Test\TestFull.bak' 
WITH MOVE 'test1' TO 'E:\test\TestMDFFile.mdf', 
MOVE 'test1_log' TO 'E:\test\TestLDFFile.ldf' 
+0

Dank Milena, ich habe die MDF-Datei mit Management Studio, aber in der Tat sollte ich diese Operation über Code durchführen, dh meine Benutzer sollten in der Lage sein lese daten aus der bak-datei, also sollte ich in der lage sein, MDF aus der bak-datei über code wiederherzustellen und dann eine verbindung zu MDF herzustellen und die datenbank zu lesen. wie kann ich diese operation in meinem C# code durchführen? Gibt es eine Probe? –

+0

@Ali_dotNet Ich kann nicht mit C# helfen :( –

+0

ok, verwenden Sie eine andere Sprache? –

Verwandte Themen