RESTORE FILELISTONLY
FROM DISK = 'full path to your .bak file'
sẽ hiển thị cho bạn tên tệp hiện tại trong bản sao lưu. Nếu có nhiều bản sao lưu trong một tệp và bạn không chỉ định "WITH FILE = X
", bạn sẽ chỉ nhận được thông tin cho bản sao lưu đầu tiên trong tệp.
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
phác thảo Rough với SMO (không kiểm tra):
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.
Sử dụng SMO, bạn có thể lấy danh sách tập tin sử dụng Restore.ReadFileList
See Also: How to restore a database from C#
Nguồn
2010-11-14 09:09:02
tôi đang làm việc với các đối tượng SMO, không phải với các truy vấn sql –
Bạn đã không nói rằng bạn muốn làm điều đó theo chương trình. –
Tôi có một thẻ SMO và C# :-( –