将数据从一个数据库传输到具有不同模式的另一个数据库

Transfer data from one database to another database with different schema

我无法将数据从一个 sql 服务器 2008 r2 传输到另一个 sql 服务器 2012 具有不同模式的数据库,这里是一些不同的场景,

  1. database 1

数据库 1 与 tables 公司和客户,它们都有 FirmId 和 ClientId 主键作为 int 数据类型, FirmId 是 int 数据类型,作为客户端中使用的参考键 table。

  1. database 2

数据库 2 具有相同的 tables Firm 和 Client,它们都有 FirmId 和 ClientId 但主键作为唯一标识符, FirmId 是在客户端 table.

中用作引用键的唯一标识符数据类型
  1. problem

问题不是将数据从 1 个数据库 table 复制到 2 个数据库 table,而是将引用键的 Firm table 维护到客户端 table.因为有数据类型更改。

我正在使用 sql 服务器 2008 r2 和 sql 服务器 2012

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

即使我远不是 SQLServer 专家,我也会尝试一下 - 这是一个通用过程(您必须对所有必须替换 INT 的 tables 重复该过程使用 UID,当然......)。 我将使用 Table A 来指代 parent(公司,如果我清楚地理解您的示例)和 Table B 来指代 child(客户,我相信) .

  1. 删除指向TableA的关系
  2. 从 Table A
  3. 的 id 列中删除标识
  4. 在 Table A
  5. 上创建一个带有 Uniqueidentifier 的新列
  6. 为 Uniqueidentifier 列生成值
  7. 在所有 child table 中添加新的 Uniqueidentifier 列 (Table B)
  8. 使用 OLD id 列映射您的 child 记录并从您的 parent table.
  9. 更新新的 Uniqueidentifier 值
  10. 删除所有 id 列
  11. 重建关系

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