【发布时间】:2011-09-06 21:26:14
【问题描述】:
我有一个在完全恢复中运行的 SQL Server 数据库。我需要删除数据(大约 30-4000 万条记录),但我不能让数据库脱机,因为它一直在使用。我也无法将其切换到简单恢复模式以防万一发生任何事情并且我们丢失了实时数据。当我尝试以小块(大约 200 万行)删除数据时,事务日志变得非常大并导致过程变得非常缓慢。由于备份作业在夜间运行,我只有很短的时间范围。
有人对我如何做到这一点有任何想法吗?我考虑将表复制到另一个数据库(在简单恢复模式下),然后删除数据。这是个好主意吗?
有 3 张桌子有问题。活动、事件和目标。它的事件表中有数百万条记录,这是需要时间删除的。所有这些都通过 Id 列具有必要的关系。
【问题讨论】:
-
你试过更小的块吗?
-
不幸的是,这些“块”是我能得到的最小的。
-
删除后会剩下多少行?
-
与大多数数据库问题一样,您应该包括架构,在这种情况下,包括关键字段中的数据分布。您说“这些‘块’尽可能小”,但根据所提供的信息,我们不知道。
-
@Ian:是的,企业版。
标签: sql-server-2008 large-data-volumes