【问题标题】:Automatically manage Sql Server database size自动管理 Sql Server 数据库大小
【发布时间】:2013-10-09 14:09:14
【问题描述】:

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

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

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

这应该在服务级别完成吗?我可以修改我的服务以定期检查已用空间并执行手动“清理”(无论是删除、存档等)。但是,我不确定如何在 SQL 级别上执行此操作。

谢谢

【问题讨论】:

  • 我会亲自使用这项服务。或者有一个每天运行一次的计划应用程序,并删除任何超过 30 天的记录。我们要记录多少记录?也许您还需要考虑用完 ID 值? (不过可能需要一段时间!)

标签: c# .net sql maintenance


【解决方案1】:

由于您使用的是 SQL Express,因此您需要按计划在服务级别执行此操作。您首先需要从表中删除要从中清除数据的行。比如:

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

这将摆脱超过一年的东西。

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

【讨论】:

    【解决方案2】:

    您可以创建一个执行此操作的作业或更好地使用 SSIS(请参阅:http://technet.microsoft.com/en-us/library/ms181153%28v=sql.105%29.aspx)。

    您可以使用这个http://technet.microsoft.com/en-us/library/ms188776.aspx 过程来查询已使用的空间,如果超过了sshold,您可以删除数据。

    【讨论】:

    • 您不能将 SSIS 或 SQL Server 代理与 SQL Server Express 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    相关资源
    最近更新 更多