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

自动管理Sql Server数据库大小

  •  0
  • user1649803  · 技术社区  · 12 年前

    有2个.NET服务使用2个SQL Server数据库。我目前正在使用SQL Express,因此最大数据库大小是个问题。

    当大小接近10GB限制(或某些记录限制)时,我想自动删除最旧的X数量的记录以释放一些空间。

    这不是一个生产环境,我真的不需要旧数据,我只想保持数据的“新鲜”。

    这是否应该在服务级别进行?我可以修改我的服务,定期检查已使用的空间,并执行手动“清理”(无论是删除、归档等)。但我不确定如何在SQL级别上做到这一点。

    2 回复  |  直到 4 年前
        1
  •  1
  •   Rob    12 年前

    由于您使用的是SQL Express,因此需要在服务级别按一定的时间表执行此操作。您首先需要从要清除数据的表中删除行。类似于:

    delete BigOleTable where LoggedDate < dateadd(yy,-1,getdate())
    

    这将消除一年以上的东西。

    然后,您将需要收缩数据库。。所以,这取决于您的恢复模型。如果您处于完全恢复状态,则需要备份事务日志。然后发布一个收缩数据库,正如Tanner在上面提到的那样。

        2
  •  0
  •   George Mavritsakis    12 年前

    您可以创建这样的作业,也可以更好地使用SSIS(请参阅: http://technet.microsoft.com/en-us/library/ms181153%28v=sql.105%29.aspx ).

    你可以使用这个 http://technet.microsoft.com/en-us/library/ms188776.aspx 查询所用空间的过程,如果超过阈值,可以删除数据。

    推荐文章