我正在使用 SQL Server 2005 速成版。我注意到默认情况下Recovery Model
设置为Simple
。我将此选项更改为Full
但想知道在没有备份的情况下启用哪些其他选项以保证完全恢复。
有没有办法对 SQL Server 2005 Express 数据库进行预定备份?
我正在使用 SQL Server 2005 速成版。我注意到默认情况下Recovery Model
设置为Simple
。我将此选项更改为Full
但想知道在没有备份的情况下启用哪些其他选项以保证完全恢复。
有没有办法对 SQL Server 2005 Express 数据库进行预定备份?
添加一个答案以帮助简而言之解释恢复模型,术语(尤其是 Full 也是一种备份)使人们感到困惑。
我们将跳过批量记录,这是一种混合恢复模型,当您执行某些批量操作时非常理想,并且可以在处理过程中以编程方式更改您的恢复模型。
快速背景 - SQL Server 维护一个预写事务日志。在您的应用程序进行更新的示例中 - 更新首先写入日志(并且必须写入以使事务被视为已提交)。写入最终会在某些点写入数据文件,但在 SQL Server 重新启动/崩溃的情况下不需要。因为它被强化到日志文件中,所以如果在崩溃之前它已经全部完成,SQL 就有正确的信息来恢复或“重放”该事务,或者如果它没有全部完成则回滚或“撤消”该事务。此日志文件会根据您的恢复模式继续增长和增长:
完全恢复模式 --> 您是在告诉 SQL Server “我真的很关心能够恢复到某个时间点。” 因此,这基本上意味着,您希望 SQL 保留其事务日志记录,甚至超出崩溃恢复所需的记录,但您希望保留日志记录,按计划备份它们并能够恢复到特定的时间点。在这种恢复模式下,您的日志文件会继续增长,直到您进行备份,然后它可以被截断(物理大小保持在它增长到的位置,但可以根据其他一些规则重用日志文件的某些部分)
简单恢复模式 --> “我不需要去特定的时间点,我上次好的完整备份就可以了。” 您告诉 SQL Server 只是截断该日志文件或在 SQL 认为合适的情况下重用其中的空间 - 基本上,当崩溃/重新启动恢复不再需要记录时。
在上述任一模式下,您都可以完全恢复您的数据库,如果您的意思是 - 将其恢复到已知的良好点。简单模式意味着您的恢复只能是最后一次好的完整备份。如果您的日志文件在故障时完好无损,则完整模式使您能够恢复到特定时间点,如果没有,则可以恢复到最后一次良好的日志备份。
所以问题是 - 您的 RPO/RTO 承诺并与您的业务部门达成一致 (http://www.straightpathsql.com/archives/2011/02/can-you-restore-sql-server-sqlu/)确定哪种模式。请记住,如果要满了,您必须进行事务日志备份或面对不断增长的日志文件。另请记住,当您从简单切换到完整时,必须先进行完整备份以初始化更改,然后才能开始进行日志备份。
有关 SQL Server 恢复模型的更多信息 - http://msdn.microsoft.com/en-us/library/ms189275.aspx
您仍然需要备份才能从像您之前的帖子这样的事件中恢复。AFAIK 大多数在野外的备份管理脚本(SSC、Ola Hallengren等)应该可以正常工作。
SQL 2005 速成版中的自动化数据库维护是一个重点明确的系列文章,其中涵盖了在没有 SQL 代理的情况下计划备份的附加问题。
迈克的回答解释了恢复模式,但我会回答你的另一个问题:
SQL Server Express 是免费的,但不包括 SQL Server 代理。Agent 是 SQL Server 的作业调度部分。要启动定期安排的作业,您需要使用 Windows 任务计划程序或完全许可的 SQL Server(标准版、企业版、数据中心版等)。它们内置了代理,您可以在这些服务器上设置作业以备份您的 Express 服务器。