将记录从一个db移动到另一个db并跟踪新的标识列

时间:2012-09-13 16:50:08

标签: sql-server-2000 etl

我有2个具有相同模式的sql server 2000数据库。

我必须将给定表中的一部分行从数据库A移动到数据库B. 我还必须将其他表中的所有相关行也移到数据库B上。

这是一个简化的例子

让我们在每个数据库中假设有以下表格:       作者,书籍,奖项,销售。

让我们说这些表中的每一个都有一个标识列,即PK。这些列名为AuthorID,BookID,AwardID,SaleID。

我需要搬家#Stephen King"从数据库A中的作者表到数据库B. 让我们说数据库A中的Stephen King记录的AuthorID为12.我还必须移动图书列表中的所有行,其FK AuthorID为12.与奖励和销售表相同。

我早些时候编写代码时,数据库B是全新的,使用" SET IDENTITY_INSERT"命令。因此,斯蒂芬金在每张表中都使用了相同的AuthorID。

现在的问题是工作人员一直忙于向数据库B添加新记录,我不能简单地将记录从数据库A迁移到数据库B而不会遇到PK冲突。我别无选择,只能让数据库B为迁移的记录分配新的PK值并跟踪它们,以便在相关记录结束时使用正确的FK。

在这个简化的例子中,我有4个表,我必须编写代码。

在我的现实生活中,我有46张桌子。

我不希望手动编码。

我是否可以购买任何预先存在的工具来简化此过程?

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是将源数据库中的所有PK和FK更改为负数。然后,您可以将它们插入到新数据库中而不会发生冲突。

答案 1 :(得分:0)

如果您可以在表上标识一组完全不同的字段,您可以创建一个唯一的约束,您可以在两个系统上强制实施,那么您也可以使用它来比较两个系统以确保数据相同。如果没有办法唯一地识别两个系统之间的数据,就不会有任何功能方法在它们之间迁移数据。