数据库数据与验收同步

时间:2011-02-21 15:15:26

标签: sql-server data-migration

在我工作的金融公司,有各种独立的部署环境,包括登台和生产环境。可以使用内部开发的应用程序修改这些环境的数据库公开的数据。目前,这种数据修改可以应用于具有适当访问权限的任何人的登台和生产。但是,审计合规性要求关键人员在暂存环境中接受更改,从而将其推送到生产环境。

为实现这一目标,我们将为这些关键人员提供一个用户界面,在该界面中,他们可以看到登台和生产表之间的差异,并在按下按钮时接受它们。

---------    synch    ------------
|Staging| ----------> |Production|
---------      ^      ------------
               |
   Acceptance by key personnel

我的问题是:如何才能最好地确定和/或存储两个环境表之间的差异,以便在不接受时将它们推送到生产环境并(可选)恢复?到目前为止我提出了两个解决方案:(1)比较两个表(或那些表的视图)使用sql脚本或工具,如Red Gate的SQL数据比较,或(2)将对登台表的更改存储为差异,类似于使用的差异版本控制系统。

对于这两种解决方案,我都想到了各种各样的含义,我不会在这个问题中提及,因为我不想过多引导你的思考过程。

1 个答案:

答案 0 :(得分:0)

我会选择之前在您描述的场景中成功使用的Red-Gate SQL Data Compare。给定SQL数据比较,您可以轻松创建在两个方向上工作的SQL脚本(应用和删除)。一个不错的SQL服务器功能是创建快照以进行比较(在开发人员和企业版中可用)。

但是我遇到了一些问题:

  • 如果分段和生产环境对于您需要进行分级的表集不是100%相等的数据,那么一切都变得复杂。例如,如果登台环境仅包含生产数据的子集。然后需要某种额外的逻辑。删除数据也变得更加复杂。
  • 我发现跟踪已经应用的内容有某种帮助是至关重要的。这里可以使用像Liquibase这样的工具。主要原因是跟踪模式的版本以及数据库中的静态数据。