2010-11-14 2 views
5

У меня есть файл bak, у которого есть резервная копия базы данных.Извлечение имени базы данных из файла bak

Я хочу восстановить эту базу данных в новое место, и мне нужно получить имя базы данных из этого файла, любую идею, как это сделать?

Мне нужно, чтобы переопределить местоположение файла данных и расположение файла журнала.

Спасибо за помощь.

ответ

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

покажет вам текущие имена файлов в резервной копии. Если в одном файле имеется несколько резервных копий, и вы не укажете «WITH FILE = X», вы получите информацию только для первой резервной копии в файле.

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 

Грубые наброски с SMO (не проверено):

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, вы можете получить список файлов с помощью Restore.ReadFileList

Смотрите также: How to restore a database from C#

+0

Я работаю с объектами SMO, а не SQL запросов –

+1

Вы не сказали, что вы хотели сделать это программно. –

+1

У меня есть SMO и C# тег :-( –

Смежные вопросы