我有一个审计表设置,它基本上反射(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/