我需要设置一个备份计划来覆盖一个开发/生产前服务器,直到真正的DBA出现为止。我的计划是运行基本运行以下语句的3T-SQL作业
我担心覆盖最后一个差异备份/日志备份文件是错误的做法,因为我还无法确认新的日志/diff备份将覆盖从上一次完整db备份开始的整个期间。
根据备份文件涵盖的时间范围,有人能确认这是如何工作的吗?
我希望如果上午9点54分失败
即使我每个工作只有一个文件。
我是疯了还是在正确的轨道上?
发布于 2017-09-29 00:43:07
正如注释中提到的,默认情况下,备份到现有文件名后,将向该文件追加最新的备份。对于完全和差异备份,至少,您不想这样做。
为了你的目的:
请注意,为了最大程度的安全,您应该保留以前的完整备份和差异备份,直到新备份完成为止。如果您用新的备份覆盖了以前的完全备份,那么一旦Server开始编写完整备份,直到它完成为止,您就没有备份了。在完整备份的基础上,差异和事务日志备份是无用的。
如果您真的想冒这个风险:要写入同一个备份文件,覆盖其中的任何现有备份,请使用以下选项:
WITH INIT, SKIP, FORMAT
我的建议:正如sp_BlitzErik在评论中所指出的,使用Ola Hallengren的免费维护脚本,因为它们将为您完成所有“繁重的工作”。
为了涵盖该选项,取决于所使用的Server版本,请记住,您可能可以选择设置Server维护计划来执行这些备份。其中包括一个任务,该任务将删除您指定的较旧文件,不管您指定的时间有多长。但是,我假设您没有提到这些,因为您要么没有权限使用它们,要么不想使用它们。
如果这两个选项都用完了,但是您可以编写一个脚本(用您选择的语言)来删除超过2天的文件,并且可以在磁盘上保存最多两天的备份文件:
F:\MSSQLSERVER\BU\MyDB_FULL_20170928_191216.bak
的完整备份文件(如果今天7:12:16运行)。我将使用MyDB_DIFF_
作为差异备份的前缀,使用MyDB_TRAN_
作为事务日志的前缀。请注意,完整备份和差异备份应该具有扩展.bak
,而事务日志备份应该具有扩展.trn
。F:\MSSQLSERVER\BU\
文件夹中48小时以上的任何文件。这应该确保您至少有一个完整备份,以及依赖它的差异备份和t日志备份,即使脚本是在中午而不是午夜意外运行的。通过在运行完全备份之前运行它,还可以确保为该完整备份提供最大可用空间。您总是可以选择使用“清理”脚本;因为这三种文件类型都以相同的前缀开头,所以您可以删除差异和事务日志备份超过3小时,并且仍然有很好的缓冲。除非您已经有了一个可供您使用的删除脚本,否则我再次强烈建议您使用Ola Hallengren的剧本。请记住,与你自己能做的任何事情不同,它们已经被世界各地的许多人测试过了。
https://dba.stackexchange.com/questions/187237
复制相似问题