sql - 定期删除 SQL 中的行

标签 sql sql-server sql-server-2005 tsql

我有一个审计表设置,它基本上反射(reflect)了我的一个表以及日期、用户和命令类型。下面是它的样子:

AuditID      UserID Individual    modtype   user  audit_performed
1           1239      Day Meff      INSERT    dbo   2010-11-04 14:50:56.357
2           2334      Dasdf fdlla   INSERT    dbo   2010-11-04 14:51:07.980
3           3324      Dasdf fdla    DELETE    dbo   2010-11-04 14:51:11.130
4           5009      Day Meffasdf  UPDATE    dbo   2010-11-04 14:51:12.777

由于这些类型的表可以很快变大 - 我正在考虑对旧行进行某种自动删除。例如,如果我有 3 个月的历史记录 - 如果我可以删除第一个月而保留最后两个月。同样,所有这些都必须是自动的——我想一旦某个日期被命中,一个查询就会激活并删除带有审计数据的最旧的月份。做这个的最好方式是什么?

顺便说一下,我使用的是 SQL Server 2005。

最佳答案

SQL 代理工作在这里应该没问题。您绝对不需要对每个带有触发器的插入都执行此操作。我怀疑你甚至需要每天都这样做。您可以安排一个每月运行一次的作业并清除超过 2 个月的任何内容(因此,在任何给定时间,您最多只能拥有 3 个月的数据减去 1 天)。

关于sql - 定期删除 SQL 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100548/

相关文章:

SQL top 5 记录算法

sql - sql server中两个连续日期之间的差异(以天为单位)

sql - 需要存储大量的小时和分钟(即36 :30) best method?

sqlbulkcopy,我想覆盖数据库中的当前行

mysql - bigquery SQL 计算项目计划的开始和结束时间

sql - 选择两个集合中的值

SQL Server - 任何更好的替代方法来提高具有大量插入的冗长事务的性能?

mysql - 每行 SQL 的一些变量

sql-server - 如何创建引用复合主键中一列的外键

sql - 正确设计SQL Server数据库