如果备份文件已重命名,如何将 SQL Server 数据库还原到自定义位置?

mar*_*ark 5 sql-server backup restore

假设我有一个名为 SQL Server 的数据库bubu,并且相应的备份文件是bubu.bak.

如果我想使用自定义位置的后备存储恢复它,我使用以下 T-SQL 语句:

RESTORE DATABASE "bubu2" FROM DISK = N'C:\bubu.bak' WITH REPLACE, STATS = 10, 
    MOVE N'bubu' TO N'C:\custom\bubu.mdf', MOVE N'bubu_log' TO N'C:\custom\bubu.LDF'
Run Code Online (Sandbox Code Playgroud)

所以我有一个新的数据库bubu2,它恰好是bubu. 这里重要的是我假设备份包含逻辑文件bubububu_log,因为备份文件名为bubu.bak.

现在,假如有人重命名bubu.bakmumu.bak。这样做,打破了我的逻辑,因为现在我将尝试这个 T-SQL 语句:

RESTORE DATABASE "mumu2" FROM DISK = N'C:\mumu.bak' WITH REPLACE, STATS = 10, 
    MOVE N'mumu' TO N'C:\custom\mumu.mdf', MOVE N'mumu_log' TO N'C:\custom\mumu.LDF'
Run Code Online (Sandbox Code Playgroud)

当然,我失败了,因为mumu.bak不包含逻辑文件mumu并且mumu_log- 重命名备份文件不会重命名备份中包含的逻辑文件(当然)。

但是,如果备份文件被重命名,我该怎么做?

And*_*mar 5

您可以使用filelistonly选项来检索备份中的文件名:

restore filelistonly from disk='c:\mumu.bak'
Run Code Online (Sandbox Code Playgroud)