我是 SQL Server 的初学者。对于一个项目,我需要打开 CDC。我将 cdc 数据复制到另一个(存档)数据库,之后可以立即清理 CDC 表。所以保留时间不需要很长,我只是把它放在 1 分钟,当清理作业运行时(在保留时间已经完成之后),它似乎只删除了几条记录(最旧的记录)。为什么不删除所有内容?有时它根本不会删除任何东西。运行该作业几次后,其他记录将被删除。我觉得这很奇怪,因为保留时间已经过去了。
我将保留时间设置为 1 分钟(我实际上想要 0,但这是不可能的)并且没有更改阈值(= 5000)。我禁用了计划,因为我希望在将 CDC 记录复制到我的存档数据库后立即运行清理作业,而不是在特定时间运行。
我对这个想法的逻辑是,例如下午会有更新。将 CDC 记录复制到存档数据库的任务应在凌晨 2:00 运行,在此任务之后将调用清理作业。因此,由于最短保留时间,清理作业应删除所有 CDC 记录。保留时间到底过了?
我只是想看看当我在工作中再次设置时间表时发生了什么,比如 CDC 的一般用途。时间过去后,我检查了 CDC 表,结果发现它也只删除了最旧的记录。那么我做错了什么?
我做了一个解决方法,我做了一个新工作,任务是删除 CDC 表中的所有记录(并禁用整个默认的 CDC 清理工作)。这会更好,因为它可以删除所有内容,但这让我很困扰,因为我想使用原始的清理工作,并且我认为它应该能够以我想要的方式工作。
谢谢,
金