DECLARE @sql varchar(8000)
--下面是删除15天前备份文件的处理
set @sql='Del E:/Databasebackup/'
@sql=@sql +rtrim(convert(varchar,getdate()-15,112))+'.bak'
Exec master..xp_cmdshell @sql
DECLARE @DelFile Varchar(256)
set @DelFile='Del E:/Databasebackup/'
set @DelFile=@DelFile+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
Exec master..xp_cmdshell @DelFile
--判断文件是否存在
create table ##tb(a bit,b bit,c bit)
DECLARE @sql Varchar(256)
set @sql='E:/Databasebackup'+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
insert into ##tb
exec master..xp_fileexist @sql
--文件存在则删除
if exists(select 1 from ##tb where a=1)
begin
DECLARE @DelFile Varchar(256)
set @DelFile='Del E:/Databasebackup/'
set @DelFile=@DelFile+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
Exec master..xp_cmdshell @DelFile
end
drop table ##tb
---最新代码
--判断文件是否存在
create table ##tb(a bit,b bit,c bit)
DECLARE @DelFile Varchar(256)
set @DelFile='E:/Databasebackup/'
set @DelFile=@DelFile+'shya_DATA_'+Replace(convert(varchar(10),getdate()-28,120),'-','_')
insert into ##tb
exec master..xp_fileexist @DelFile
--文件存在则删除
if exists(select 1 from ##tb where a=1)
begin
DECLARE @Delsql Varchar(256)
set @Delsql='Del '+ @DelFile
Exec master..xp_cmdshell @Delsql
end
drop table ##tb
本文介绍了一种使用SQL Server的扩展存储过程xp_cmdshell来删除指定目录下超过一定天数的数据库备份文件的方法,并包含了判断文件是否存在及进行相应操作的代码。
410

被折叠的 条评论
为什么被折叠?



