如何从SQL Server数据库保存存档

问题描述 投票:0回答:1

我在SQL Server中有一个数据库。基本上,表由许多XML文档组成,这些XML文档在给定的时间代表相同的表数据(例如备份历史记录)。切断所有旧的(3个月)备份,从数据库中删除并保存存档的最佳方法是什么?

Table structure

sql-server xml backup
1个回答
0
投票

SQL Server中没有开箱即用的导出功能。

假设

  • 您的桌子可能很大,因为它看起来像您,而且每分钟都像桌子一样。
  • 如果要在SQL Server内部完成所有操作。

然后,我建议分块进行清理。SQL中按块删除的通常过程是将DELETE与OUTPUT语句结合使用。存档和删除的最简单方法就是将OUTPUT放到另一个数据库中的表中,仅出于此目的。

所以您的步骤将是:

  1. 创建一个新的数据库(ArchiveDatabase
  2. ArchiveDatabase(ArchiveTable)中创建一个存档表,该表具有要删除的表的相同结构。
  3. 在while循环中执行DELETE / OUTPUT
  4. 备份ArchiveDatabase
  5. TRUNCATE ArchiveTable表在ArchiveDatabase中>
  6. 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 
© www.soinside.com 2019 - 2024. All rights reserved.