0

我有 2 个具有相同架构的 sql server 2000 数据库。

我必须将给定表中的行子集从数据库 A 移动到数据库 B。我还必须将所有相关行从其他表移动到数据库 B。

这是一个简化的例子

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

假设这些表中的每一个都有一个标识列,即 PK。这些列被命名为 AuthorID、BookID、AwardID、SaleID。

我需要将“Stephen King”从数据库 A 中的 Authors 表移动到数据库 B。假设数据库 A 中的 Stephen King 记录的 AuthorID 为 12。我还必须使用 FK 移动 Books 表中的所有行AuthorID 为 12。与奖项和销售表相同。

当数据库 B 是全新的时,我已经编写了代码来使用“SET IDENTITY_INSERT”命令来处理这个问题。因此,Stephen King 最终在每个表中都使用了相同的 AuthorID。

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

在这个简化的示例中,我有 4 个表需要编写代码。

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

我不期待手动编码。

我可以购买任何现有的工具来简化此过程吗?

4

2 回答 2

0

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

于 2012-09-13T16:55:56.367 回答
0

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

于 2012-09-13T18:14:05.787 回答