嗯,我确信这个问题之前已经被问过了,但我还没有找到一个可靠的答案。我正在创建一个解决方案,该方案涉及远程办事处通过Web服务将数据上传到一个主数据库。 基本上,每个办公室都会有一个每隔1小时左右运行一次的Windows服务,将任何新数据提取到数据集中,通过http连接到服务器,并上传数据集。服务器然后导入数据,一切都很好。理论上它应该起作用。对。将来自多个远程SQL数据库的数据合并到一个SQL主数据库中
并非如此,所以每个办公室都有一个唯一的OfficeID,由服务器提供给它,以便在服务器上保持唯一。起初我以为我会破解它,直到我意识到自动增量PK的问题。你看,所有的远程办公室已经有了现有的数据,所有的表都有自动增量PK和所有相关的约束条件。具有OfficeID的根/父表没有问题,因为它已经是唯一的,问题在于外键,因为当它们到达服务器时,它们将具有NewID,因此与子项的关系将丢失。
目前我只有2个解决方案。
- 删除服务器数据库上的所有自动增量和唯一PK约束,并使用OfficeID过滤掉重复的外键。或...
- 导入数据集时,使用像Scope_Identity等东西来跟踪每一行及其关联的父级,以便每个子行都与正确的父行相关联。
选项1看起来更容易实现,因为它对我来说工作量较少,但是我不知道sql的性能以及数据完整性将成为问题,因为约束无法执行。选项2将保持检查,但需要的代码量是令人难以置信的。
有没有其他的选择我不考虑?如果我只有2个以上,这是两个邪恶中较小的一个。
感谢 约翰
我已经在每个表中使用GUID进行更新/修改,因为我知道现在有办法可以在所有数据库中复制GUID。这可能是我将要使用的路线。在服务器上,我只需要ProductGUID等列,这将确保每个子行都知道它是正确的父类,没有任何疑问。 – 2010-09-08 11:11:46