我在SQL Server中有一个数据库。基本上,表由许多XML文档组成,这些XML文档在给定的时间代表相同的表数据(例如备份历史记录)。切断所有旧的(3个月)备份,从数据库中删除并保存存档的最佳方法是什么?
SQL Server中没有开箱即用的导出功能。
假设
然后,我建议分块进行清理。SQL中按块删除的通常过程是将DELETE与OUTPUT语句结合使用。存档和删除的最简单方法就是将OUTPUT放到另一个数据库中的表中,仅出于此目的。
所以您的步骤将是:
DELETE / OUTPUT循环看起来像
declare @RowsToDelete int = 1000
declare @DeletedRowsCNT int = 1000
while @DeletedRowsCNT = @RowsToDelete
begin
delete top (@RowsToDelete)
from MyDataTable
output deleted.* into ArchiveDatabase.dbo.ArchiveTable
where dt < dateadd(month, 3, getdate())
set @DeletedRowsCNT = @@ROWCOUNT
end