什么“重置”事务日志

Mik*_*ole 6 sql-server backup transaction-log

我正在尝试创建一个备份计划,该计划每天创建两次完整备份。每小时进行一次差异备份,每 5 分钟进行一次日志备份。

它工作正常,但我注意到日志备份(.trn文件)每次都在增长。

内容日志备份

如果我使用backup log with init它会覆盖并且我收到了最近的错误。

我认为在另一个完整或差异备份之后,下一个日志备份将只包括“自上次完整/差异备份以来”的日志备份?

BACKUP DATABASE 
    lagerdb 
TO DISK = N'C:\SQLBACKUP\lagerdb-rechts.bak' 
WITH INIT, NOUNLOAD, NAME = N'lagerdb full', NOSKIP, STATS = 20, NOFORMAT

BACKUP DATABASE 
    lagerdb TO DISK = N'c:\SQLBACKUP\lagerdbd-rechts.bak' 
WITH INIT, NOUNLOAD, NAME = N'lagerdb differential', NOSKIP, STATS = 20, NOFORMAT, DIFFERENTIAL 

BACKUP LOG 
    lagerdb 
TO DISK = N'C:\SQLBACKUP\lagerdb-rechts.trn' 
WITH NAME = N'lagerdb logs'
Run Code Online (Sandbox Code Playgroud)

我按照下面的建议做了一些事情,将日志备份到带有日期时间戳的单独文件:

 -- Declares a string
 declare @sql nvarchar(255)
 declare @ParmDefinition NVARCHAR(500)

 -- declares the path name. Seperated by disk drive and directory.
 declare @bkName varchar(255)

 -- Declares the filename. 
 declare @bkdbName varchar(50)
 declare @bkdbDateTime varchar(20)

 --Get Timestring
 set @sql = N'select @parm1OUT = CONVERT(varchar(20),CONVERT(DATE,GETDATE(),104),104)     + ''_'' + Substring(CONVERT(varchar(8),getdate(),114),1,2) + Substring(CONVERT(varchar(8),getdate(),114),4,2)'
 SET @ParmDefinition=N'@parm1OUT varchar(20) OUTPUT'

 exec sp_executesql 
 @sql, 
 @ParmDefinition,
 @parm1OUT=@bkdbDateTime OUTPUT

 set @bkdbName = 'LagerDB_' + @bkdbDateTime

 -- Enter the Drive letter below. Please remove C: as current value.
 set @bkName = 'C:'

 -- Enter the folder name below (with lead and end '\' back slashes.
 -- Ensure that you change the folder from Temp below.
 set @bkName = @bkName + '\SQLBackup\'
 set @bkName = @bkName + @bkdbName 

 -- Sets the backup running by executing the @sql string.
 set @sql = 'BACKUP DATABASE lagerdb TO DISK = '''+@bkName+'.bak'''

 print @sql
 exec sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)

(如:LagerDB_06.12.2011_1418.bak

但我真正想要的答案是我认为它会在完整备份后重置。也许我应该backup with init在完整备份或差异备份之后安排一个?

Mar*_*ith 11

您正在重复将日志备份到同一文件。后续备份将附加到该文件中,您可以在屏幕截图中看到这些内容。通常,我们倾向于备份到过时的文件:

BACKUP LOG 
    lagerdb 
TO DISK = N'C:\SQLBACKUP\lagerdb-rechts_201112061130.trn' 
WITH NAME = N'lagerdb logs'
Run Code Online (Sandbox Code Playgroud)

省去手动启动必要脚本的麻烦,并使用Ola Hallengren 的维护解决方案