2010-11-14 10 views
5

Ich habe eine Bak-Datei, die eine Sicherung einer Datenbank enthält.Abrufen des Datenbanknamens aus der Bak-Datei

Ich möchte diese Datenbank an einem neuen Speicherort wiederherstellen, und ich muss den Datenbanknamen aus dieser Datei abrufen, eine Idee, wie Sie dies tun?

Ich brauche es, um den Speicherort der Datei und den Speicherort der Protokolldatei zu überschreiben.

Danke für Hilfe.

Antwort

11
RESTORE FILELISTONLY 
FROM DISK = 'full path to your .bak file' 

zeigt Ihnen die aktuellen Dateinamen in der Sicherung. Wenn mehrere Sicherungen in einer Datei vorhanden sind und Sie nicht "WITH FILE = X" angeben, erhalten Sie nur Informationen für die erste Sicherung in der Datei.

RESTORE DATABASE MyNewDBname 
    FROM DISK = 'full path to your .bak file' 
    WITH 
     MOVE 'LogicalFilename_Data' TO 'D:\somepath\...\MyDB.mdf', 
     MOVE 'LogicalFilename_Log' TO 'D:\somepath\...\MyDB.ldf'; 
GO 

Grobe Beschreibung mit SMO (nicht getestet):

Restore restoreDB = new Restore(); 
restoreDB.Database = myDatabase.Name; 
// Specify whether you want to restore database, files or log 
restoreDB.Action = RestoreActionType.Database; 
restoreDB.Devices.AddDevice(@"D:\somepath\...\MyDBFull.bak", DeviceType.File); 

restoreDB.ReplaceDatabase = true; // will overwrite any existing DB  
restoreDB.NoRecovery = true; 

// you can Wire up events for progress monitoring */ 
// restoreDB.PercentComplete += CompletionStatus; 
// restoreDB.Complete += RestoreCompleted; 

restoreDB.SqlRestore(myServer); 

Ref.

SMO verwenden, können Sie die Dateiliste abrufen mit Restore.ReadFileList

Siehe auch: How to restore a database from C#

+0

ich mit SMO Objekten arbeitete, nicht mit SQL-Abfragen –

+1

Sie nicht sagen, dass Sie es programmatisch tun wollen. –

+1

Ich habe ein SMO und ein C# -Tag :-( –

Verwandte Themen