2017-09-14 40 views
0

我有一个SQL服务器数据库与5个文件组我想备份2个文件组(只包含文件流),并将其恢复到不同的现有数据库。恢复文件组到不同的数据库

+0

你怎么说“不同的现有数据库”的意思的例子?每次恢复都会重新创建恢复的文件,是否意味着您的“不同”数据库具有相同的结构? (我的意思是数据文件的数量及其读取/只读状态? – sepupic

+0

另一个数据库有不同的文件和文件组的编号和名称 –

+0

当你将恢复到该数据库时,它的文件中没有人可以访问。重新写入,并且新恢复的数据库在恢复之前不知道它具有哪些文件,它只会知道原始数据库的备份文件 – sepupic

回答

1

你所要求的是Piecemeal Restores (SQL Server)

可以恢复primary +所有readwrite FG +在你任何的readonly文件组是在simple恢复模式,也可以还原primary +任何其他文件组(S),如果你是在full恢复模式。

作为第一个文件组恢复始终是primary文件组,它会取代你的“不同的现有数据库”主数据文件和日志文件(在你的restore命令你应该使用with move指向现有的MDF +日志文件),每随后的恢复将会覆盖其他文件,那么“现有”数据库中将没有任何内容,因此恢复到“不同的现有数据库”是没有意义的:您将只能联机恢复您所恢复的文件组,并且数据库将会对“现有数据库”的剩余文件一无所知。因此,它只是恢复到另一个(不存在的)数据库。

这里是simple恢复模式Example: Piecemeal Restore of Only Some Filegroups (Simple Recovery Model)

primary + readonly fg还原顺序例子,这里是full恢复模型Example: Piecemeal Restore of Only Some Filegroups (Full Recovery Model)

+0

我的情况是,我有两个数据库db1(filegroups fg1,fg2,fg3)和另一个在db2(文件组fg4,fg5,fg6),我想从db1备份fg2并将其还原到db2 –

+0

我已经回答了你,这是不可能的,每一次零碎的恢复都是从主文件组强制恢复开始的,而db1中的fg1会知道这个db只有fg1和fg2。你的fg4,fg5,fg6不会成为恢复数据库的一部分 – sepupic

+0

你可以恢复只有一些fg而不恢复主要同一个数据库,但它不是你的情况。当你恢复到另一个数据库时,第一个恢复的fg总是PRIMARY – sepupic