2011-11-02 32 views
0

是否有可能将MS SQL-Server设置为从表中删除最长的行时,如果它变得太大?如果不是,我应该使用某种触发器还是应该在应用程序端使用定时事件?当数据库表增长过大时,自动删除最旧的行?

我的情况是,我刚刚为Web应用程序实现了一个日志记录解决方案。记录大量信息是一项要求,因此数据库在一年左右内会变得太大,我感觉没有人会维护数据库。寻找这个问题的最佳解决方案。

+0

什么是太大?为什么它太“不好”?数据库的恢复模式是什么?数据模型是什么样的?它应该删除所有表中的行,还是应该删除某些应该删除的表,同时还要说参考表是?大小和清理工作如何运行,我们是否有权访问计划程序?我们在谈论什么版本的SQL Server? – billinkc

+1

也许每年(月?)对表中的数据进行分区是一种选择?这样就不需要删除旧的数据。如果使用日期过滤器进行查询,则较旧的表格将无法访问。 – Wolph

回答

3

与其试图提前确定什么是太大,我建议您定义一个业务规则(存储过程,配置表等),可以设置为控制记录保留多少天。

然后,您可以安排作业在夜间通过SQL Server运行,这将删除比指定条件更早的所有日志记录。

通过这种方式,您和您的用户将确切知道日志系统的期望值(即您只能访问30天的日志文件)。

如果将其与常规备份策略结合使用,那么在需要较旧记录的情况下,可以从备份中检索这些记录。

0

您可以使用资源调控器来衡量资源使用情况或定义检查数据库文件大小的作业,然后调用将从数据库表中删除数据的SP。