现在,我已经演示了如何备份整个数据库。然而,它只答应你恢复备份结束时刻的数据库所保存的数据。假如数据库很大并且频繁变动,由于时间和空间的限制,频繁进行全数据库备份是不现实的。当数据库失败时,可能会造成大量数据丢失。
在这种情况下,有两种提高可恢复性的途径,这两个途径都要求全数据库备份。而且这两种方法都要求数据库恢复模型为FULL或者BULK_LOGGED。
第一种方法采用差异数据库备份,它只捕捉并保存全数据库备份后改变的数据。由于它的文件较小而且信息简明,用它进行数据恢复的速度非常快。
下面的例子在一个名为DiffBackupDevice的逻辑备份设备上创建了一个差异备份:
BACKUP DATABASE Northwind TO DiffBackupDevice WITH DIFFERENTIAL
第二个提高可恢复性的方法利用交易记录备份,恢复可以在一个特定的时间点上完成。
你可能会问这怎么可能。记住,交易记录的目的就是记录发生在数据库中所有交易。交易记录答应COMMIT和ROLLBACK正确工作。为了达到这个功能,该数据的变化前后的数值必须随同操作类型、交易开始(时间)等一齐被记录下来。
备份技巧
利用下面的列出的技巧来确保你不会在每周一次的数据库备份过程中忘记要害步骤。
在截短记录之前,也就是所有的已提交(committed)交易从记录中清空之前,所有的这些信息都保存在交易记录中。在SIMPLE恢复模型中,记录在一个CHECKPOINT期间内截短(在SQL Server内存缓冲写道磁盘时),它是自动发生的,但也可以手动执行。这也就是SIMPLE恢复模型不支持时间点(point-in-time)恢复的原因。在FULL和BULK_LOGGED恢复模型下,当交易记录被备份时,交易记录被截短,除非你明确指出不进行截短。
为了备份交易记录,使用BACKUP LOG命令。其基本语法与BACKUP命令非常相似:
BACKUP LOG { database } TO <backup device>
下面是如何把交易记录备份到一个名为LogBackupDevice的逻辑设备上的例子:
BACKUP TRANSACTION Northwind TO LogBackupDevice
假如你不希望截短交易记录,使用NO_TRUNCATE选项,如下所示:
评论加载中…
![]() |