恢复整个SQL数据库还是只恢复错误文件组

恢复整个SQL数据库还是只恢复错误文件组,第1张

恢复整个SQL数据库还是只恢复错误文件组,第2张

如果你有一个文件有问题。这个文件的大小为50MB,您的整个数据库大约运行几十亿字节,因此恢复单个失败的文件是非常有意义的。发生这种情况的一种情况是,文件或文件组位于单独的驱动器上,并且该驱动器有问题。通常,仅恢复单个文件或文件组会缩短总停止时间,因为这明显减少了需要恢复的数据总量。

现在,你为什么不选择这样做呢?原因如下:
您需要有一个事务日志备份。如果要从备份中还原文件或文件组,还需要还原用它们创建的事务记录备份,以便整个数据库可以处于一致的状态。在SQL Server 2000和2005中,您需要使用完整恢复或大容量日志恢复模式(即,不是简单恢复)来实现这一点。我应该指出,SQL Server的实现者没有尽力判断自上次备份以来文件或文件组是否被修改过。如果它没有被改变,那么交易记录是不必要的。然而,一般来说,你仍然需要备份你的交易记录。如果您没有备份交易记录的恢复或备份计划,请立即创建一个。

要恢复的文件或文件组中的表与数据库中的其他表之间的数据不一致已经成为需要考虑的问题。如果您有相互依赖的表,并且这些表没有存储在同一个物理文件或文件组中(这有时是不可避免的),则只还原一个文件或文件组可能会导致它与数据库的其余部分不同步。例如,如果有一个表通过一个联接与另一个表链接,并且该联接使用视图和存储过程,则只恢复一个表而不恢复另一个表可能会有问题。
当数据库中只有一个文件组时。如果你所有的数据都只存储在一个文件或者文件组里,而且不是特别大的数据库,会怎么样?此时,恢复文件或文件组的努力变得毫无意义。

选择性恢复文件或文件组的主要原因是,当恢复数据库非常大,以至于恢复整个数据库的成本很高时,它使恢复数据库的部分损坏成为可能。在非常小的轻量级数据库中,当非生产系统或数据库中只有一个文件组时,实现选择性恢复功能的意义不大,因为恢复整个数据库和恢复单个文件或文件组没有太大区别。

我发现,大多数时候,当人们希望使用文件或文件组进行恢复时,他们实际上是希望将特定的表恢复到以前某个时间点的状态。这在SQL Server中并不是一个显式的特性,但是有一种方法可以做到这一点,只要您不介意需要手动管理由于这种方法而导致的可能的不一致(如上面的#2所述)。如果您手头有一个数据库备份,您可以简单地恢复该备份,只需将它视为具有不同名称的同一数据库的实例。然后,通过事务记录将数据库前滚至指定点(如果需要),然后手动将当前数据库复制到目标数据库。

我自己也尝试过几次这种方法,但是只有一个表与同一个数据库中的其他表不相关。我的例子涉及一个聊天网站,其中包括一个留言板系统。我经常要恢复留言板上不小心删除的一些留言。这些是独立的:从留言板表的数据生成的连接是外部的,而不是内部的。因此,我可以随意更新表单,因为我知道我不会让那个表单与其他表单不同步。

在SQL Server 2000及其更高版本中,当您执行还原操作时,可以使用PARTIAL子句,以便只还原所需的文件组数据。作为一种在时间和空上节约成本的措施,非常有用:不需要做繁重的工作来恢复所有数据,只需要在一张表上操作。并且可能没有足够的空时间来进行完整的恢复操作。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 恢复整个SQL数据库还是只恢复错误文件组

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情