自动管理Sql Server数据库大小

时间:2013-10-09 14:09:14

标签: c# .net sql maintenance

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

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

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

这应该在服务级别完成吗?我可以修改我的服务以定期检查spaceused并执行手册“清理”(无论是删除,存档等)。我不确定在SQL级别上这是怎么做的。

由于

2 个答案:

答案 0 :(得分:1)

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

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

将摆脱超过一年的东西。

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

答案 1 :(得分:0)

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

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