使用 NOINIT 从 .bak 文件中恢复 SQL

cpr*_*leg 7 sql-server backup restore

希望这对外面的人来说是一个很好且快速的问题。它从我之前的问题继续。

我有一个要恢复的 .BAK 文件。.BAK 是用NOINIT参数创建的,以尝试保存以前的版本,因此附加了较新的数据(据我所知)。我想知道这是否意味着 - 在还原时 - 还原会尝试使用旧版本的备份?

即我已经备份了数据库,向其中添加了新表,执行了另一个完整备份并删除了添加的表。当我尝试恢复时,我没有取回“新”表,这是因为恢复在 .BAK 中找到了在“新表”之前创建的数据库版本吗?如果是这样,我如何指定使用最新数据?

编辑:抱歉没有早点说明,这是使用 SQL Server 数据库

Tho*_*ger 10

那是因为没有指定 的FILE参数RESTORE DATABASE,它默认为 1,这将是该媒体上的第一个备份集。请参阅此页面上的指定备份集部分

代替:

restore database YourDb
from disk = 'C:\yourpath\backupfile.bak';
go
Run Code Online (Sandbox Code Playgroud)

你会想做:

restore database YourDb
from disk = 'C:\yourpath\backupfile.bak'
with file = <n>;
go
Run Code Online (Sandbox Code Playgroud)

N媒体中的备份集编号在哪里。 N可以从RESTORE HEADERONLY在媒体上运行获得。您将关注的列是PositionFILE选项一起使用的。