我有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张桌子。
我不希望手动编码。
我是否可以购买任何预先存在的工具来简化此过程?
答案 0 :(得分:0)
一个简单的解决方案是将源数据库中的所有PK和FK更改为负数。然后,您可以将它们插入到新数据库中而不会发生冲突。
答案 1 :(得分:0)
如果您可以在表上标识一组完全不同的字段,您可以创建一个唯一的约束,您可以在两个系统上强制实施,那么您也可以使用它来比较两个系统以确保数据相同。如果没有办法唯一地识别两个系统之间的数据,就不会有任何功能方法在它们之间迁移数据。