代码之家  ›  专栏  ›  技术社区  ›  John

如何限制桌子的大小?

  •  6
  • John  · 技术社区  · 16 年前

    我有一个SQL Server 2005数据库。我正在将数据记录到表中。我想防止表数据变得太大。

    如何将表的大小限制为x行数,并保持日志记录?我想让最老的一排下车。

    4 回复  |  直到 16 年前
        1
  •  8
  •   bobs    16 年前

    你必须自己建立这个过程。您可能希望研究如何创建运行SQL的SQL Server作业 DELETE 基于您定义的条件的语句。

        2
  •  3
  •   Paul Sasik    16 年前

    这是一个例子,触发器在Sql Server中可能是一个好主意。(我个人的感觉是,SQL中的触发器就像代码中的goto一样。)

    只要编写一个INSERT触发器,当触发时,它将检查文件中的行数,并根据指定的规则执行DELETE。

    这里有一个链接 trigger basics. 以及 another ,这一次是屏幕盖。

        3
  •  2
  •   Remus Rusanu    16 年前

    将表放在自己的文件组中。限制文件组的大小。见:

    然后添加一个删除旧日志记录的作业,但这通常比听起来更棘手。使用滑动窗口的最有效方法是: How to Implement an Automatic Sliding Window in a Partitioned Table . 如果不可能,那么接下来最好的事情是确保表上的集群键是日期,这样删除操作可以有效地删除旧行。

        4
  •  0
  •   Vijay Selvaraj    16 年前

    如果您想限制用于日志记录的表的大小,我建议您不要考虑通过限制表中存储的记录数来解决问题。相反,对于存储日志的表有一个存档或清除进程,此进程可以配置为在达到X行数时清除/存档日志,或者稍后您希望在X分钟/小时后重新配置它。如果您关心实际空间,然后最好分析日志实际占用的空间。一旦您知道数据库有多少可用的物理空间,请限制SQL Server中的数据增长,以确保存储日志信息的数据文件不会超出您的预期。