日志文件通常很大而且很笨重。有没有办法“备份”没有任何日志文件(或空日志文件)的 SQL Server 数据库?
3 回答
部分日志实际上包含在备份中。这是您在还原时获得一致性的方式。从日志(或记录的更改)中获取备份运行时更改的页面,然后在还原过程结束时应用这些页面。
您无法解决这个问题,但您可以限制 SQL Server 的日志记录量。您可以通过将数据库置于简单模式来执行此操作,但如果您这样做,请了解您无法恢复到有人在
delete myTable
并忘记了 WHERE 子句。您只能从完整备份中恢复。
您要做的是定期备份数据库(使用 BACKUP DATABASE 命令),并且更频繁地运行 BACKUP LOG 命令。通常人们每晚对小型数据库进行一次完整备份,然后每小时进行一次日志备份。假设您保留所有这些备份文件,这允许您恢复到一天中的任何时间点。
它还管理日志文件大小,因为 BACKUP LOG 命令释放日志文件中的空间以供重用。
就在您进行完整数据库备份之前,执行:
BACKUP LOG databasename WITH TRUNCATE_ONLY
之前这样做的原因是将来的日志备份仍将保持时间点一致性。这样,您将始终拥有一个有效的链(无论如何,从这个完整备份开始 - TRUNCATE 将阻止您进行时间点恢复,因为无论何时您上次的日志备份是,尽管您所有的仅数据备份都会仍然有效)。
对不起,但你的问题没有意义。
当您备份数据库时,您从数据文件(MDF 和 NDF)而不是文件中备份数据页。然后,引擎会附加备份期间发生的任何更改(来自日志条目)。
使用 BACKUP LOG 备份日志条目(不是文件)。如果数据库具有简单恢复模型,则不需要这样做。
当您恢复数据库时,它会在磁盘上重新创建文件。你是这个意思吗?
日志文件本身对于所有 RDBMS 的工作方式是绝对必要的。
这里唯一的问题是如何在 BCP/DR 策略的上下文中备份/恢复它们。