如何将旧的SQL数据库数据转换为新的表格布局?

时间:2013-06-28 20:00:16

标签: sql sql-server sql-server-2005 database-design data-binding

我们拥有一个经过深思熟虑的表结构的旧数据库,几乎没有关系设置,也没有命名方案。我创建了一个新的数据库,其中包含一个干净的关系数据结构,可以实现正确的设计实践。

我正在寻找有关将旧数据迁移到新格式的不同方法的建议。这将需要大量的数据重塑,这将不会很有趣。数据被大量访问,挑战将是使所有相关数据(帐户,重要服务等)的两个数据库保持同步。

我认为触发器可能是去这里的方式 - 但也许有一种我不知道的不同方法(可能是MS Sync Framework,或者代码级数据适配器,因为有太多的数据会更有效访问代码遍布各地,经典的ASP和.Net在几十个项目中。有问题的数据库是SQL Server 2005,以SQL Server 2000兼容模式运行。

2 个答案:

答案 0 :(得分:1)

我认为要采用的方法是在新数据库中编写一个存储过程,实际上会将您的 delta 更改(只有从上次运行到存储的瞬间完成的修改) proc运行),并将此存储过程放在sql代理作业中。

将sql代理作业配置为每15分钟运行一次,并让数据同步。

在此方案中使用触发器的缺点

触发器会降低性能,因为sql server会同时执行触发器代码以及update / insert / delete语句,并且每次都包含这些作为执行的一部分,即如果你的触发器代码需要2秒钟执行并且没有触发器的update语句需要2秒才能执行,然后在触发器就位的情况下更新时间将增加到4秒。因此,在这种情况下使用触发器可能会导致巨大的性能瓶颈。

答案 1 :(得分:0)

我正在处理我工作中的相同情况,我正在编写一个应用程序来进行迁移。原始数据库没有建立关系,因此它就像一组断开连接的电子表格。通过构建我自己的应用程序,我能够使用新建立的外键迁移数据,并分配特定于数据的默认值来代替空值。