我有一个叫做Admin的数据库。它只有一个名为主文件的默认文件组。
File group: primary
files in the file group: Admin_data.mdf现在我已经采取了完整的文件组备份。
Backup file name: fg_full.bak然后在同一个名为sec_file.ndf的文件组中创建一个新的ndf,并创建几个表,在每个表中插入1000行。
一个小时后,对MDF和NDF文件进行了文件备份。
MDF backup: Admin_Data.bak
NDF backup: sec_file_ndf.bak使用SSMS进行文件备份

在这里,我的sec_file被删除了,所以我想恢复最新的NDF备份,我如何恢复它?
单头恢复输出

Restore filelistonly from disk = 'D:\sec_file_ndf.bak'
发布于 2017-08-23 10:11:04
查询备份文件
RESTORE HEADERONLY FROM DISK = 'D:\sec_file_ndf.bak'和
RESTORE FILELISTONLY FROM DISK= 'D:\sec_file_ndf.bak' ...to验证D:\sec_file_ndf.bak文件的内容。
您可能在一个*.BAK文件中有多个备份。如果是这样的话,将选项FILE = 2添加到RESTORE命令中,以恢复最新的*.NDF文件备份。
发布于 2017-08-23 10:26:03
假设您的数据库处于FULL恢复模型中(正如您在注释中所确认的那样),那么只恢复第二个文件是可能的。
顺序是这样的:
这是我的复制代码:
if db_id('test') is not null drop database test;
go
CREATE DATABASE test ON PRIMARY
( NAME = N'prime1',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test.mdf' ,
SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'test_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf' ,
SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%);
go
alter database test set recovery FULL;
go
backup database test filegroup = 'PRIMARY'
to disk = 'Z:\backups\default\test_primaryFG1.bak';
go
alter database test add file
( NAME = N'prime2',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_prime2.ndf' ,
SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB );
go
-- second connection:
use test;
go
create table dbo.t(id int);
go
-- first connection:
backup database test file = 'prime1'
to disk = 'Z:\backups\default\test_prime1.bak';
go
-- second connection:
create table dbo.t1(id int);
insert into dbo.t1(id) values(1);
go
-- first connection:
backup database test file = 'prime2'
to disk = 'Z:\backups\default\test_prime2.bak'
-----------------------------------
backup log test
to disk = 'Z:\backups\default\test_tail.trn' with norecovery;
restore database test file = 'prime2'
from disk = 'Z:\backups\default\test_prime2.bak'
with norecovery;
restore database test
from disk = 'Z:\backups\default\test_tail.trn' with recovery;
-----------------------------------
-- just another restore starting with FD restore as OP did:
restore database test
from disk = 'Z:\backups\default\test_primaryFG1.bak' with replace, norecovery;
restore database test file = 'prime2'
from disk = 'Z:\backups\default\test_prime2.bak' with norecovery
restore database test
from disk = 'Z:\backups\default\test_tail.trn' with recovery;https://dba.stackexchange.com/questions/184151
复制相似问题