恢复备份时,出现错误:
逻辑文件' foo'不是数据库的一部分' YY'。使用RESTORE FILELISTONLY列出逻辑文件名。
如果我执行WITH FILE = 1
,恢复脚本可以正常工作但如果我WITH FILE = 2
则会显示错误。
我已经运行了FILELISTONLY并命名为" foo"真的存在并且它是正确的。
我已经运行了HEADERONLY并且有两个项目,我需要第二个恢复。
实际脚本:
USE [master]
RESTORE DATABASE [ni_5]
FROM DISK = N'C:\backup\ni_5.bak' WITH FILE = 2 /* will work if i put 1 here*/, NOUNLOAD, STATS = 10,
MOVE N'foo_dat' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ni_5.mdf',
MOVE N'Fooind1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_1.ndf',
MOVE N'Fooind10' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_10.ndf',
MOVE N'Fooind11' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_11.ndf',
MOVE N'Fooind12' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_12.ndf',
MOVE N'Fooind2' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_2.ndf',
MOVE N'Fooind3' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_3.ndf',
MOVE N'Fooind4' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_4.ndf',
MOVE N'Fooind5' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_5.ndf',
MOVE N'Fooind6' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_6.ndf',
MOVE N'Fooind7' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_7.ndf',
MOVE N'Fooind8' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_8.ndf',
MOVE N'Fooind9' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_9.ndf',
MOVE N'foo_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\foo_13.ldf'
GO
实际输出:
Msg 3154, Level 16, State 4, Line 2
The backup set holds a backup of a database other than the existing 'ni_5' database.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
答案 0 :(得分:0)
备份集包含现有数据库以外的数据库备份 'ni_5'数据库。
这意味着您的ni_5.bak
备份集包含与现有ni_5
数据库不同的数据库备份。
如果我执行WITH FILE = 1,恢复脚本工作正常,但它显示了 错误,如果我用WITH FILE = 2。
考虑到上述错误,这是完全合理的,因为使用FILE = 2
,您基本上说要恢复ni_5.bak
备份集中包含的第二个备份(包含正确的内容)要恢复的数据库)。根据你的需要,这很好,并说:
我需要第二个恢复