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#
Я работаю с объектами SMO, а не SQL запросов –
Вы не сказали, что вы хотели сделать это программно. –
У меня есть SMO и C# тег :-( –