如何在不丢失未删除数据的情况下拍摄数据库快照?

How can I Snapshot a database without losing undeleted data?

我们有一个车间数据库 OPERATION,它将选定的数据复制到用于报告的数据库 BUSINESS。 OPERATION 中的数据每天都会被第三方车间应用程序删除,因此为了保留 BUSINESS 中的数据,我将 DELETE delivery format 的 Article 属性 设置为是 不复制 DELETE 语句

这很好用,但偶尔有人想要复制某些东西 extra/different。根据出版物更改的性质,它可能会提示重新初始化快照,这当然会破坏业务数据库(正如我有一天不幸所做的那样)。

最好的解决方法是什么?

我建议您实施 ETL 过程而不是复制。

您可以使用 SSIS 从 OPERATION 数据库中提取数据并将其复制到 BUSINESS 数据库。在 SSIS 包中,您可以完全控制逻辑。例如,您可以将数据附加到 BUSINESS 中的现有数据。您可以使用 MERGE 来插入新记录并修改现有记录(这样重复 运行 它是安全的,因为未更改的数据不会被覆盖)。

如果有人请求额外的数据,您只需编写一个新的 SSIS 包来传输额外的数据,而不会影响您的主进程。

SSIS 可以从 SQL 代理作业(例如使用 dtexec)安排到 运行。