sqlserver 删除备份文件只保留最新的

CREATE TABLE #DBNAME(ID int identity(1,1),dbname nvarchar(100))
CREATE TABLE #BAK(ID int identity(1,1),bak nvarchar(120))
DECLARE @BakDir nvarchar(100) = ‘dir /b /a:d G:\sqldata\mssql\backup\‘
DECLARE @DelStr nvarchar(2000)

INSERT INTO #DBNAME
EXEC xp_cmdshell @BakDir

DELETE #DBNAME WHERE dbname IS NULL

DECLARE @count int
SELECT @count = COUNT(1) FROM #DBNAME

DECLARE @ID int = 1
DECLARE @DBName nvarchar(100)
DECLARE @path nvarchar(200)

WHILE @ID <= @count
BEGIN
SET @path = ‘‘
SET @DBName = NULL
TRUNCATE TABLE #BAK
SELECT @DBName = dbname FROM #DBNAME WHERE ID = @ID
IF @DBName IS NOT NULL
BEGIN
SET @path = ‘dir /b /o:-d G:\sqldata\mssql\backup\‘ + @DBName
DECLARE @CD nvarchar(100)=‘G:\sqldata\mssql\backup\‘ + @DBName +‘\‘
INSERT INTO #BAK
EXEC xp_cmdshell @path

DELETE #BAK WHERE bak IS NULL
SET @DelStr = ‘DEL ‘
IF (SELECT COUNT(1) FROM #BAK) > 1
BEGIN
SELECT @DelStr+= @CD+bak+‘ ‘ FROM #BAK WHERE ID <> 1
SET @DelStr = @DelStr+‘)‘
SELECT @DelStr = REPLACE(@DelStr,‘ )‘,‘‘)
PRINT @DelStr
EXEC xp_cmdshell @DelStr
END
END
SET @ID += 1
END

DROP TABLE #DBNAME
DROP TABLE #BAK

时间: 2024-10-11 12:35:54

sqlserver 删除备份文件只保留最新的的相关文章

MySql删除重复只保留一条

本来要删除error_barcode表中barcode值重复的只保留一条 表结构如下(PS:id是自增长,该图是删除成功所以id不连续) sql语句如下: DELETE FROM error_barcode WHERE barCode IN ( SELECT barCode FROM error_barcode GROUP BY barCode HAVING count(barCode) > 1 ) AND id NOT IN ( SELECT min(id) FROM error_barcod

笔记:Oracle查询重复数据并删除,只保留一条记录

1.查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2.删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录 DELETE from 表 WHERE (判断字段) IN ( SELECT 判断字段 FROM 表 GROUP BY 判断字段 HAVING COUNT(判断字段) > 1) A

数据库自动备份压缩脚本(备份最近七天,七天之前自动删除,只保留rar文件)

把下面脚本添加到服务器计划任务中去,设置为每天执行即可,文件备份路径即为脚本所在路径,必须安装压缩文件 @echo offrem 计算指定天数之前的日期,用于后面删除指定天数的数据set DaysAgo=7set/a year=1 rem 假设系统日期的格式为yyyy-mm-ddcall :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDaysset /a PassDays-=%DaysAgo%call :DaysToDate %PassD

有重复行,查询时只保留最新一行的sql

一.表结构如下:表名test 二.sql select temp.* from (select test.*, row_number() over(partition by obd_code order by odd desc) rm from test) temp where temp.rm = 1;

ELK 删除索引只保留10天

delelk.sh: #!/bin/bash#定时清除elk索引,10天DATE=date -d "10 days ago" +%Y.%m.%dcurl -XDELETE "http://127.0.0.1:9400/*-${DATE}" 127.0.0.1:9400 ES的地址 定时任务执行此脚本30 17 * bash /home/scripts/delelk.sh 原文地址:http://blog.51cto.com/wsxxsl/2174530

利用tar进行完全备份、增量备份、差异备份,并控制版本号,自动删除备份文件

因业务需求,需对一个目录进行定期备份,现在使用tar进行自动备份,计划每周一次完整备份,其他每天进行增量或者差异备份,所以写出下面的脚步通过指定参数来选择备份模式.备份文件只保留最近两个完整备份版本和附属的增量或差异备份版本. [[email protected] script]# ./backup.sh          Please select the backup or delete mode,[full|diff|incr|delete|help] [[email protected]

sublime 去除重复行或者只保留唯一值

去除重复行或者只保留唯一值,分别对应两件事情. 去除重复行,指的是,将text 文档中所有有重复行的行不做保留,全都删除. 只保留唯一值,指的是,将text 文档中有重复行的保留且仅保留一个值,最后就实现整个text中每一行均为唯一值. 这两种方法都是基于正则表达式替换的方法,查找的模式是一样的(利用了正则表达式capture group的方法),区别在于替换目标的内容不同. sublime 去除重复行 首先,点击菜单栏edit -- sort进行排序. 查找内容为: ^(.+)$[\r\n](

php实现只保留mysql中最新1000条记录

这篇文章主要介绍了php实现只保留mysql中最新1000条记录的方法和相关示例及数据库结构,十分的全面,有需要的小伙伴可以参考下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php mysql_connect("localhost","root","root"); mysql_select_db("test"); //保留最新的1000条记录 $

初探oracle删除重复记录,只保留rowid最小的记录

如题,初探oracle删除重复记录,只保留rowid最小的记录(rowid可以反映数据插入到数据库中的顺序) 一.删除重复记录可以使用多种方法,如下只是介绍了两种方法(exist和in两种). 1.首先创建一个测试表. create table my_users( id number, username varchar2(20), sal number ) 2.插入测试数据 begin for i in 1..10 loop insert into my_users values(i,'carl