大致基于文档中的示例E,打开一个新的查询窗口并运行:
RESTORE DATABASE MyDB_Copy FROM DISK = 'C:\blahblah\MyDB.bak'
WITH REPLACE, RECOVERY,
MOVE 'MyDB' TO 'C:\blahblah\Data\MyDB_Copy.mdf',
---------------------------------------^^^^^
MOVE 'MyDB_log' TO 'C:\blahblah\Data\MyDB_Copy.ldf';
-------------------------------------------^^^^^
逻辑名称并不重要;物理文件名是。假设您的逻辑文件名只有两个;运行EXEC MyDB..sp_helpfile;
确定。
如果需要还原日志,请更改RECOVERY
为NORECOVERY
:
WITH REPLACE, NORECOVERY,
----------------^^
然后,您可以发出一系列:
RESTORE LOG MyDB_Copy FROM DISK = 'C:\blahblah\file1.trn' WITH NORECOVERY;
在最后一个:
RESTORE LOG MyDB_Copy FROM DISK = 'C:\blahblah\fileN.trn' WITH RECOVERY;
或者,如果您只需要在某个时间点之前进行部分日志记录(我假设您已经检查了LSN和时间在哪里,以便您确切知道需要哪些文件):
RESTORE LOG MyDB_Copy FROM DISK = 'C:\blahblah\fileN.trn' WITH
STOPAT = '<some point in time Friday>', RECOVERY;
您说的以前版本中的工作方式永远不会奏效,除非备份来自其他服务器。默认情况下,它将尝试将新的mdf和ldf文件放在完全相同的位置,这是不可能的。