代码之家  ›  专栏  ›  技术社区  ›  empz

如何在SQL SERVER 2005中拥有一个“主结构”数据库和“子数据”数据库?

  •  1
  • empz  · 技术社区  · 16 年前

    我一直在谷歌上搜索,但我找不到这个是否存在,或者我在问一些魔法=P

    好的,事情是这样的。

    然后,我想拥有该主数据库的几个“子数据库”,它们实现了这些模式、表等,但每个子数据库都有不同的数据。

    因此,当我需要创建一个新的存储过程或类似的东西时,我只需在主数据库上创建它(当然,它在其子数据库上也可用)。

    实际上,我有几个不同的数据库,它们具有相同的模式和不同的数据。但问题是要保持它们之间的一致性。每次我创建一个脚本来创建一些SP或添加一些索引等,我都必须在每个数据库中执行它,有时我可能会错过一个=P

    所以,假设你有一个宇宙(将是主数据库),宇宙有空格(每个空格由一个子数据库表示)。因此,我正在开发的应用程序需要动态地“克隆”空格。为此,我们必须创建一个新的数据库。如今,我正在创建正在克隆的数据库的备份,将其还原为新的备份并截断表。 我希望能够创建“master”数据库的新“子”,它将维护模式和所有内容,但将从空数据开始。

    感谢大家!

    6 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    8 年前

    您真正需要的是对数据库模式进行版本控制。

    do-you-source-control-your-databases

    如果你使用SQL Server,我建议 dbGhost -价格实惠,且在以下方面表现出色:

    • 同步2个数据库
    • 区分2个数据库
    • 从一组脚本创建数据库(我推荐这个版本)。
    • 批处理支持,以便您可以使用单个批处理升级所有数据库

    您可以将此基础架构用于以下两个方面:

        2
  •  1
  •   David McEwing    16 年前

    作为替代方案,我会使用Visual Studio Database Pro工具或RedGate SQL比较工具来比较和传播更改。

        3
  •  1
  •   dkretz    16 年前

    此外,对于许多(最强大的)网站来说,这既是每个服务器的问题,也是每个数据库的问题。

        5
  •  0
  •   Remus Rusanu    16 年前

    mssqlsystemresource 数据库按照您的描述工作:定义一次,并在每个数据库中“显示”为特殊 sys

        6
  •  0
  •   Chris K    16 年前

    理论上,您可以在UNIVERSE.sysobjects表上设置一个触发器(假设是SQL Server),然后可以枚举master.dbo.sysdatabases以查找所有子数据库。如果你有一个特殊的表,表明它是一个子数据库,你可以引用child.dbo.sysobjects来查找它。

    毫无疑问,这很难实施。但这是你可以做到的一种方式。