sql-server – 使用不同的模式将数据从一个数据库传输到另一个数据库

我有问题将数据从一个sqlserver 2008 r2传输到另一个具有不同架构的sql server 2012数据库,这里有一些不同的场景,

  1. database 1

数据库1有表Firm和Client,这些都有FirmId和ClientId主键作为int数据类型,
FirmId是int数据类型,作为Client表中使用的引用键.

  1. database 2

数据库2具有相同的表Firm和Client,它们都具有FirmId和ClientId但主键作为uniqueidentifier,
FirmId是uniqueidentifier数据类型,作为Client表中使用的引用键.

  1. problem

问题不是将数据从1个数据库表复制到2个数据库表,但问题是将引用键的Firm表维护到Client表中.因为有数据类型更改.

我正在使用sql server 2008 r2和sql server 2012

请帮我解决/找到解决方案,非常感谢您宝贵的时间和精力.谢谢

最佳答案
即使我远离SQLServer的专家,我也会嗤之以鼻 – 这是一个通用的程序(你必须为所有必须用UID替换INT的表重复它,当然……).
我将使用表A来引用父级(如果我清楚地了解您的示例,则使用公司),使用表B来引用子级(客户,我相信).

>删除指向表A的关系
>从表A的id列中删除标识
>在表A上创建一个包含Uniqueidentifier的新列
>为Uniqueidentifier列生成值
>在所有子表中添加新的Uniqueidentifier列(表B)
>使用OLD id列来映射您的子记录&从父表更新新的Uniqueidentifier值.
>删除所有id列
>重建关系

话虽如此,我只想给你添加一个警告:根据某些人的说法,转换为UID是a very bad idea.但是如果你真的需要这样做,你可以编写脚本(并测试)上面提到的程序.

转载注明原文:sql-server – 使用不同的模式将数据从一个数据库传输到另一个数据库 - 代码日志