SQL Server 2012:从压缩备份恢复数据

5

我正在尝试从保存在ZIP文件中的备份(.bak)文件中恢复数据库,但是一直没有成功。然而,在从ZIP文件中提取后,我可以将其恢复。

这个MS页面说SQL Server 2008及更高版本的每个版本都可以恢复压缩备份,但有以下限制。

限制:压缩备份有以下限制:

  1. 压缩和未压缩的备份不能同时存在于介质集中。
  2. 较早版本的SQL Server无法读取压缩备份。
  3. NT备份无法与压缩的SQL Server备份共享磁带。

我不清楚第一个限制是什么意思。请问是否有人可以澄清/解释一下?

我已经完成了以下步骤:

  1. 在暂存 SQL Server 上备份 [MyTestDB.bak];通过右键单击 > 发送到 - 压缩(zipped)文件夹将其压缩;现在,将其命名为 MyTestDB.ZIP

  2. ZIP 文件 FTP 到本地开发 SQL Server 并尝试从 ZIP 文件进行还原。但是数据库名称不可用于备份。

两个 SQL Server 版本完全相同。

SQL Servers 版本:Microsoft SQL Server 2012 - 11.0.5058.0(X64)-Standard Edition(64 位)

When tried to restore from ZIP file

使用术语“压缩备份”来表示保存在ZIP文件中的备份文件是否正确,或者需要以不同的方式进行备份,以便可以称之为压缩备份?
但是,如果我在从ZIP文件中提取出来后选择.bak文件,则一切都正常工作。

When tried to restore from .bak file

我不确定我哪里做错了?我可以简单地提取备份并恢复它,没有任何问题,但是想知道为什么它不起作用,因为从ZIP备份它将是一个更好的解决方案。

2
SQL引擎在备份时使用自己的压缩方法。我猜页面/区段被压缩而不是BAK文件。因此,这些限制与ZIP文件无关。 - huhu78
https://msdn.microsoft.com/zh-cn/library/hh231019.aspx 描述了如何在 SQL Server 中配置备份压缩。 - Tim Lentine
“压缩”并不意味着“ZIP压缩”。压缩备份仍然是常规的.bak文件,只是以另一种格式存在。SQL Server无法从ZIP文件中读取备份,如果您的备份已经被压缩,就没有必要将其放入ZIP文件中,因为它不会显著地进一步压缩。 - Jeroen Mostert
1
此外,压缩事务日志备份对于通过互联网进行日志传送是有好处的(传输量更少);但是对于长期归档,最好具有良好的压缩比(因此不使用SQL压缩+RAR);RAR还可以将备份切片成较小的文件(适用于通过互联网重新传输),并且还可以执行类似RAID的恢复卷或附加校验和。因此,即使RAR文件有点损坏(附加校验和)或某些文件丢失(恢复卷),您也可以进行恢复。 - huhu78
@huhu78:非常感谢您的评论,非常有建设性。 - Sathish
显示剩余5条评论
1个回答

6

备份压缩是一种不同的东西。

当你配置或开始备份时指定此选项,然后你会得到一个包含压缩数据的备份文件,如果你不启用压缩,则它包含未压缩的数据。

SQL Server 无法使用 zip 文件,虽然备份文件肯定是经过压缩的,但这并不是指“压缩备份”。

因此,是的,在还原备份之前需要提取备份文件。

如果您想了解如何正确地进行压缩备份,请查看这个页面,其中包含相关材料的链接:


感谢您宝贵的回答。我不太明白 MS 网站上的限制:“压缩和未压缩的备份不能同时存在于媒体集中”,您能否请详细解释一下? - Sathish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接