sqlserver写一个存储过程删除所有表中指定日期之前的历史数据

2020-09-28 16:36发布

问题:

不是指作业、定时删除的那种,就是一个存储过程,删除所有表中指定日期之前的历史数据。比如指定一个日期2019.12.31 ,那么数据库中在此之前的数据都会消失。大神们帮帮忙

回答1:

给你大致的代码

select 'delete from '+name+'where datetime < ''20200923'' ;' from sys.objects where type = 'U'
这样可以把 删除的sql语句 批量拼接出来,
当然 因为写在存储过程里 datetime 这个字段你可以处理一下,时间也可以做成参数处理一下,
然后 exec整段字符串



回答2:

所有表都有时间列吗?



回答3:

这个需求描述有问题,所有表包含系统运行的字典表和业务表。业务表一般来说是有时间字段。字典表肯定不能删除。
一般不建议直接删记录,可以把这些记录挪到备份数据库中。