【问题标题】:Multiple Client Databases using Single Schema - is that possible?使用单一模式的多个客户端数据库 - 这可能吗?
【发布时间】:2013-01-02 20:32:10
【问题描述】:

我是 SQL Server 2008 的新手,但在阅读了有关 Schemas 的内容后,我有这个问题。

目前,对于我们拥有的每个新客户,我必须手动创建一个新数据库,然后从现有数据库中导入所有对象(表/视图/存储过程等)。现在,只要开发人员有任何更新(例如,表结构的更改、存储过程等),都必须在所有数据库中进行更改。我已经厌倦了使用 DBComparer 来修复数据库中的差异。

是否有可能拥有一个包含所有表/存储过程/视图的“主架构”?这样所有“客户端数据库”都可以引用这个“主架构”,但仍然是能够毫无问题地维护自己的数据。

【问题讨论】:

  • 不,模式可用于对数据库中的对象进行逻辑分组。 (据我所知)数据库之间没有共享​​>模式的概念。
  • 相反,您应该确保所有生产数据库的结构完全相同,生成一个执行必要更新的脚本并在所有数据库中运行该脚本。不需要对所有数据库运行 DBCompararer。
  • @Mikael - 那么在上述场景中维护多个数据库的最佳解决方案是什么?
  • @MikaelEriksson - 我想知道数据库是否可以“共享”架构,以便所有更新都可以到达客户端,而不必像你提到的那样运行脚本。这可以大大减少错误/遗漏的机会

标签: sql sql-server sql-server-2008 multi-tenant


【解决方案1】:

不,这是不可能的。 Schemata 存在于数据库中。

多个客户端数据库 SIMILAR Schema,是的,但你必须一一升级。 Schema 不在 master 中 - 它在每个数据库中,并且无法更改。事实上,每个 Schema 都是完全独立的,您可以在一个数据库中拥有 01 个“相同内容”Schemata。

【讨论】:

    【解决方案2】:

    可以有一个“主”架构。可能不可能拥有这个“主”架构,并且仍然让每个客户端维护自己的数据没有任何问题

    您看到的是一种多租户架构。 Microsoft 的Multi-Tenant Data Architecture 很好地介绍了这些问题。

    This SO answer 概述了您需要考虑的各种权衡。

    【讨论】:

    • 感谢您的帮助。我想我必须解决“脚本”选项只是因为共享数据库对客户来说有点太难了。对于备份/恢复也是如此
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多