我有一个SQL Server 2005数据库。我正在将数据记录到表中。我想防止表数据变得太大。
如何将表的大小限制为x行数并保持日志记录?我希望最旧的行能够下降。
答案 0 :(得分:8)
您必须自己构建此过程。您可能希望研究创建一个SQL Server作业,该作业运行基于您定义的条件的SQL DELETE
语句。
答案 1 :(得分:3)
这是一个例子,其中触发器在Sql Server中实际上可能是一个好主意。 (我个人认为SQL中的触发器就像代码中的GOTO一样。)
只需编写一个INSERT触发器,当触发时,它将检查文件中的行数,并根据您指定的规则执行DELETE。
以下是指向trigger basics.和another的链接,这次是屏幕上限。
答案 2 :(得分:2)
将表放在自己的文件组中。限制文件组的大小。参见:
然后添加一个删除旧日志记录的作业,但这通常比听起来更棘手。使用滑动窗口的最有效方法:How to Implement an Automatic Sliding Window in a Partitioned Table。如果不可能,那么下一个最好的方法是确保表上的聚簇键是日期,这样删除就可以有效地删除旧行。
答案 3 :(得分:0)
如果要限制表的大小以进行日志记录,我不建议通过限制存储在表中的记录数来解决问题。相反,对于存储日志的表具有存档或清除过程,可以将此过程配置为在达到X行数后清除/存档日志,或者稍后您希望在X分钟后重新配置日志/小时/等。如果您担心实际空间,那么最好分析您的日志实际占用的空间。一旦了解了数据库可用的物理空间大小,就可以限制SQL Server的数据增长,以确保存储日志信息的数据文件不会超出预期。