有2个.NET服务使用2个SQL Server数据库。我目前正在使用SQL Express,因此最大的数据库大小是一个问题。
当大小接近10GB限制(或某个记录限制)时,我想自动删除最旧的X数量的记录以释放一些空间。
这不是一个生产环境,我真的不需要旧数据,我只想保持数据“新鲜”。
这应该在服务级别完成吗?我可以修改我的服务以定期检查spaceused并执行手册“清理”(无论是删除,存档等)。我不确定在SQL级别上这是怎么做的。
由于
答案 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程序查询所使用的空间,如果它超过了保留,则可以删除数据。