2016-12-06 88 views
0

我们有一个车间数据库操作系统,可将选定的数据复制到用于报告的数据库业务中。 OPERATION中的数据每天由第三方车间应用程序删除,因此为了保留业务数据,我已将DELETE交付格式的文章属性设置为请勿复制DELETE语句如何在不丢失未删除数据的情况下快照数据库?

这很好,但偶尔会有人想要复制/不同的东西。根据出版物变化的性质,它可能会提示重新初始化快照,这当然会吹走业务数据库(就像我有一天这样做了)。

最好的解决方法是什么?

回答

1

我建议你实现一个ETL过程而不是复制。

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

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

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

+0

我特别想坚持复制的原因有两个。 1.它对出版商的影响很小,这对我们的实时操作很重要。 –

+0

2.第三方应用程序从OPERATION数据库中删除数据的时间不一定一致,所以在您提出的情况下我可能会错过捕获某些记录。 –

+0

然后,我建议将所有内容复制到“分段”数据库,然后将其用作ETL过程的源到报表数据库。这样你就可以拥有两全其美。很少发生变化的复制(只有当操作数据库发生变化时),以及完全控制传输到业务数据库的内容。 – under

相关问题