【问题标题】:Merge two SQL Server databases合并两个 SQL Server 数据库
【发布时间】:2011-08-26 14:54:39
【问题描述】:

您好,我有这种情况:

  • 带有 obj A、B、C 的 SQL Server 1(生产)
  • SQL Server 2(开发)与对象 A、B、C、D、E、F、G、H、I。

我想知道如何保存 SQL Server 1 (A,B,C) 的每个对象,但同时我想从 SQL Server 2 添加每个新对象。在 SQL Server 2 A,B,C 中有相同的架构但假数据尊重 SQL Server 1 中的相同对象,因此我无法对 SQL Server 2 进行完整备份并在 SQL Server 1 中恢复它。

两台服务器都运行 SQL Server 2008。

我知道显然有一个聪明的程序可以做到这一点,但我在 SQL Server 管理方面的小经验让我瞎了眼!

提前感谢您的帮助!

【问题讨论】:

  • SQL 2008 的哪些版本、标准、快速等?您是否查看过复制或链接服务器
  • Express 用于开发,我认为是生产的标准,我想我会将所有生产数据导入我的开发数据库,​​然后我将对我的数据库进行完整备份,然后我可以将其导入生产服务器。这样做我只会丢失同时将写入生产服务器的数据。

标签: sql-server database sql-server-2008 ssms


【解决方案1】:

你需要一些好的工具!喜欢:

  • Red-Gate SQL Compare 帮助您比较和同步数据库的结构(例如,表、视图、过程、约束等数据库对象)

  • Red-Gate SQL Data Compare 帮助您比较和同步表中的数据,例如在您的查找和系统表中,甚至在您的实际数据表中

【讨论】:

    【解决方案2】:

    您可以使用不同的架构,例如在两个数据库上做:

    CREATE SCHEMA something;
    GO
    

    然后您可以将该架构中的“重复”对象移动到一侧:

    ALTER SCHEMA something TRANSFER dbo.A;
    ...
    

    然后您可以使用 SQL Compare 等工具将 something.objects 移动到另一个数据库。您将拥有两个名为 A 的对象,但它们将位于不同的模式中。自然,您的代码必须引用正确的架构。

    但是为什么它们必须在同一个数据库中呢?您可以将它们保留为单独的数据库,并在一个数据库中使用同义词来指向另一个数据库中的对象,因此所有内容都“看起来”是本地的。如果它们都在同一个模式和同一个数据库中,你打算如何从 A 查询?

    您能否准确解释您要达到的目标?您是否正在尝试使您的生产数据库向后兼容,以便您可以在不破坏现有应用程序的情况下推送您的开发更改?我认为将您的测试应用程序指向不同的数据库,然后将生产数据库完全更新(不像科学怪人)会更干净。

    【讨论】:

      【解决方案3】:

      您可以制作一个简单的 PHP 脚本来运行。

      此脚本应连接到第一个数据并将数据导入第二个数据

      【讨论】:

      • 我知道,但我想知道是否有更好的方法。编写一些代码来在像 SQL Server 这样的现代复杂数据库中导入数据并不那么舒服和有趣。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2011-03-15
      • 2016-07-30
      相关资源
      最近更新 更多