使用不同的模式

时间:2016-06-02 07:13:23

标签: sql-server database sql-scripts

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

  
      
  1. 数据库1
  2.   

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

  
      
  1. 数据库2
  2.   

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

  
      
  1. 问题
  2.   

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

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

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

1 个答案:

答案 0 :(得分:4)

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

  1. 删除指向表A的关系
  2. 从表A的id列中删除标识
  3. 在表A中使用Uniqueidentifier创建一个新列
  4. 为Uniqueidentifier列生成值
  5. 在所有子表中添加新的Uniqueidentifier列(表B)
  6. 使用OLD id列来映射您的子记录&从父表中更新新的Uniqueidentifier值。
  7. 删除所有id列
  8. 重建关系
  9. 话虽如此,我只想向您添加警告:根据一些人的说法,转换为UID a very bad idea。但是如果你真的需要这样做,你可以编写(并测试)上面提到的程序。