sql server 自动备份数据库

方法一:

GO
declare @str varchar(100)
set @str='E:\SqlDataBackup\Demo_FullBak_'+replace(convert(varchar,getdate(),23),'-','')+'.bak'
select @str
BACKUP DATABASE [Demo] TO DISK=@str WITH RETAINDAYS=15,NOFORMAT,NOINIT,NAME=N'Demo完整备份',SKIP,NOREWIND,NOUNLOAD,STATS=10
GO
GO

--自动删除两天前的备份,需开启 xp_cmdshell
declare @deletePath varchar(100)
set @deletePath='del E:\SqlDataBackup\Demo_FullBak_' + replace(convert(varchar,DATEADD(day, -3, getdate()),23),'-','')+'.bak'
exec xp_cmdshell @deletePath
GO

 

方法二:

DECLARE @filename VARCHAR(255)
DECLARE @date DATETIME
SELECT @date=GETDATE()
SELECT @filename = 'G:\存放位置\数据库名称-'+CAST(DATEPART(yyyy,@date) as varchar)+'-'+CAST(DATEPART(mm,@date) as varchar)+'-'+CAST(DATEPART(dd,@date) as varchar)+'.bak'
BACKUP DATABASE [数据库名称] TO DISK = @filename WITH INIT
GO

DECLARE @OLDDATE DATETIME
SELECT @OLDDATE=GETDATE()-5
EXECUTE master.dbo.xp_delete_file 0,N'G:\存放位置',N'bak',@olddate,1

xp_delete_file命令参数详解:

第一个参数表示文件类型,0表示备份文件,1表示文本报告

第二个参数表示要删除的文件存放路径

第三个参数表示要删除的文件后缀,不能带点号。比如写成bak,不能写成.bak

第四个参数是一个日期,文件修改日期(不是创建日期)比这个参数旧的,就删除。(日期相等不删除)

第五个参数为0或1。0表示不查找子目录的文件,1表示在当前路径和下一层路径中查找要删除的文件(最多只遍历一层)。默认值是0,可以省略。

posted @ 2021-04-23 16:47  itcaigen  阅读(116)  评论(0)    收藏  举报