与不同名称时间相关的备份数据库

时间:2013-03-01 08:39:03

标签: sql backup agent declare

我的代码,对于代理在SQL Server 2008上的工作,会生成备份文件,但是每次代理的工作被触发时,它都会将OVERWRITE保留为第一个bak文件!!

如何使用与时间相关的不同名称进行备份

e.g: testDB201313328.bak 并在1分钟后创建名称为的文件: testDB201313329.bak

改为覆盖第一个

USE msdb ;
GO

DECLARE @fileName VARCHAR(90);

DECLARE @db_name VARCHAR(20);

DECLARE @fileDate VARCHAR(20);

DECLARE @commandtxt VARCHAR(100);


SET @fileName = 'C:\Test_Backups\'; 

SET @db_name = 'testDB';    

SET @fileDate = CONVERT(VARCHAR(8), GETDATE(),112) + convert (varchar(4),DATEPART(HOUR, GETDATE())) + convert ( varchar(4) ,DATEPART(MINUTE, GETDATE())) + convert ( varchar(4) ,DATEPART(SECOND, GETDATE()));

SET @fileName = @fileName + @db_name + RTRIM(@fileDate) + '.bak';

SET @commandtxt = 'BACKUP LOG testDB TO DISK =''' + @fileName + ''' WITH INIT'

-- add a job

EXEC dbo.sp_add_job 
@job_name = N'LogBackup',
@description =N'Log Backup on weekdays every 15 minutes from 8am till 6pm' ;

-- add job steps to job
EXEC sp_add_jobstep
@job_name = N'LogBackup',
@step_name = N'Weekdays_Log_Backup',
@subsystem = N'TSQL',
@command = @commandtxt ,
@on_success_action = 1,
@retry_attempts = 5,
@retry_interval = 1 ;
GO

...

1 个答案:

答案 0 :(得分:2)

首先,备份可以包含多个备份集,因此您确定要覆盖它而不只是在同一个文件中追加另一个集合吗?否则,您需要在文件名中添加时间。希望这可以帮助。此外,如果它只有一个或两个数据库,那么有一个优秀的(免费限制使用)应用程序,谷歌SQLBackupAndFTP HTH