0

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

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

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

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

谢谢

4

2 回答 2

1

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

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

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

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

于 2013-10-09T15:05:40.783 回答
0

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

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

于 2013-10-09T14:18:23.930 回答