启用哪些选项可以保证 SQL Server Express 2005 中的完全恢复?

RPK*_*RPK 4 sql-server-2005 sql-server

我使用的是 SQL Server 2005 速成版。我注意到默认情况下Recovery Model设置为Simple。我将此选项更改为Full但想知道启用哪些其他选项以保证在没有备份的情况下完全恢复。

有没有办法对 SQL Server 2005 Express 数据库进行计划备份?

Mik*_*lsh 11

添加一个答案来帮助简而言之解释恢复模型,术语(尤其是 Full 也是一种备份)使人们感到困惑。

我们将跳过批量记录,这是一种混合恢复模型,在您执行某些批量操作时非常理想,并且可以在处理过程中以编程方式更改恢复模型。

快速背景 - SQL Server 维护一个预写事务日志。在您的应用程序进行更新的示例中 - 更新首先写入日志(并且必须为被视为提交的事务写入)。写入最终会在某些点写入数据文件,但不需要在 SQL Server 重新启动/崩溃的情况下进行。因为它被强化到日志文件中,所以 SQL 有正确的信息来恢复或“重放”该事务,如果它在崩溃之前全部完成,或者如果它没有全部完成则回滚或“撤消”该事务。此日志文件会根据您的恢复模型继续增长和增长:

完全恢复模式 --> 您是在告诉 SQL Server“我真的很关心能够恢复到某个时间点。” 所以这意味着,本质上,您希望 SQL 保留它的事务日志记录,甚至超出崩溃恢复所需的范围,但您希望保留日志记录,按计划备份它们并能够恢复到特定的时间点。在这种恢复模式下,您的日志文件会继续增长,直到您进行备份,然后才能将其截断(物理大小保持在增长到的位置,但日志文件的某些部分可以根据其他规则重复使用)

简单恢复模式 --> “我不需要去到特定的时间点,我上次的完整备份很好。” 您告诉 SQL Server 只截断该日志文件或在 SQL 认为合适的情况下重用其中的空间 - 基本上,当该记录不再需要用于崩溃/重启恢复时。

在上述任一模式下,您都可以完全恢复数据库,如果您的意思是 - 将其恢复到已知的好点。简单模式意味着您的恢复只能是最后一次好的完整备份。如果您的日志文件在发生故障时完好无损,则完整模式使您能够恢复到特定时间点,如果没有,则可以恢复到上次良好的日志备份。

所以问题是 - 您与您的业务部门 (http://www.straightpathsql.com/archives/2011/02/can-you-restore-sql-server-sqlu/) 承诺并同意的 RPO/RTO 是什么?确定哪种模式。请记住,如果要填满,则必须进行事务日志备份或面临持续增长的日志文件增长。还请记住,当您从简单切换到完整时,您必须先进行完整备份以初始化更改,然后才能开始进行日志备份。

有关 SQL Server 恢复模型的更多信息 - http://msdn.microsoft.com/en-us/library/ms189275.aspx

  • 我还注意到您说“如果不进行备份,则保证完全恢复的选项”,答案是 - 不。如果您不进行备份,则无法获得完全恢复。我还说,如果您不测试流程并定期恢复,则无法保证完全恢复。那是我上面链接的那篇博客文章 - http://www.straightpathsql.com/archives/2011/02/can-you-restore-sql-server-sqlu/ (4认同)
  • “我还说,如果你不测试你的过程并定期恢复,你就不能保证完全恢复”——太真实了。我的方法是将所有内容都称为恢复和还原,而不是备份策略。 (2认同)

Mar*_*ith 6

您仍然需要备份才能从您之前发布的事件中恢复。AFAIK 的大多数备份管理脚本(SSC、Ola Hallengren等)应该可以正常工作。

SQL 2005 Express Edition中的自动化数据库维护是一个专注于快速的系列文章,其中涵盖了在没有 SQL 代理的情况下计划备份的附加问题。


Bre*_*zar 5

Mike 的回答解释了恢复模型,但我会回答你的另一个问题:

有没有办法对 SQL Server 2005 Express 数据库进行计划备份?

SQL Server Express 是免费的,但不包括 SQL Server 代理。代理是 SQL Server 的作业调度部分。要触发定期计划的作业,您需要使用 Windows 任务计划程序或完全许可的 SQL Server(标准版、企业版、数据中心版等)。那些内置了代理,您可以在这些服务器上设置作业来备份您的 Express 服务器。