2010-11-14 18 views
5

Mam plik bak, który zawiera kopię zapasową bazy danych.Pobieranie nazwy bazy danych z pliku bak

Chcę przywrócić tę bazę danych do nowej lokalizacji i muszę pobrać nazwę bazy danych z tego pliku pomysłu jak to zrobić?

Potrzebuję go do przesłonięcia lokalizacji pliku danych i lokalizacji pliku dziennika.

Dzięki za pomoc.

Odpowiedz

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

pokaże bieżące nazwy plików w kopii zapasowej. Jeśli istnieje wiele kopii zapasowych w jednym pliku i nie określono "WITH FILE = X", otrzymasz informacje tylko o pierwszej kopii zapasowej w pliku.

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 

szorstki szkic z SMO (nie testowane):

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.

Korzystanie SMO można pobrać listę plików przy użyciu Restore.ReadFileList

Zobacz także: How to restore a database from C#

+0

Pracuję z obiektów SMO, nie z zapytań SQL –

+1

nie powiedziałeś że chcesz to zrobić programowo. –

+1

Mam SMO i C# tag :-( –

Powiązane problemy