![]() |
1
5
当两个数据库的模式完全不同时,您应该考虑数据迁移或复制技术,而不是同步技术。SQLServer为此提供了两种技术,SSIS和复制,或者您可以编写自己的脚本来实现这一点。 复制将从源数据库获取新的或修改过的数据,并将其复制到目标数据库。它提供了调度、打包和分发更改的机制,可以处理实时更新和批更新。为了工作,它需要在两个数据库中添加足够的信息来跟踪修改和匹配行。在您的例子中,很难识别哪些“产品”已经更改,因为您必须在4个或更多不同的表中识别所有相关的修改行。这是可以做到的,但需要一些努力。在任何情况下,都必须创建与目标模式匹配的视图,因为复制不允许对源数据进行任何转换。
最后,您可以创建自己的触发器或存储过程,这些触发器或存储过程将在数据更改时运行,并将数据从一个数据库复制到另一个数据库。 我还应该指出,您可能过度规范化了数据库。在这三种情况下,当您连接所有表以重新构建实体时,都会有一些性能损失,这会导致大量必需的锁定,并且索引的使用效率低下。为了便于更改,您正在牺牲性能和可伸缩性。
|