【问题标题】:How to copy complete schema to a new schema如何将完整架构复制到新架构
【发布时间】:2019-11-18 15:26:17
【问题描述】:

我正在开发一个具有 sql server 数据库的 saas 应用程序。我有特定模式中的表、函数和存储过程(即 customer1.table1、customer1.spGetCustomers 等)。我想要一种将整个模式表、函数、存储过程、索引、键等复制到每个新客户的新空模式的方法。我希望有一种快速简便的方法来做到这一点,这样我就可以为每个新客户添加新模式并保持一切完全独立。由于成本和额外的维护,我不想为每个客户创建一个新数据库。

请帮忙。

【问题讨论】:

  • 在我看来,这听起来像是一个 XY 问题。但是,您是否考虑过使用 SSMS 的生成脚本功能,或者只是对源代码管理脚本使用查找和替换?
  • 通过使用多租户数据库体系结构,每个租户都有自己的架构,您可以两全其美。现在所有客户共享一个数据库,但每个客户都有自己的一组对象。因此,您失去了恢复单个客户的能力,并面临要求对大量相同对象进行更新的挑战。本质上,您所描述的是您选择的路径会为您提供单独数据库的缺点和共享数据库的缺点。

标签: sql-server database-schema saas


【解决方案1】:

在创建脚本中使用 SQLCMD 变量。
您将编写独立于模式的创建对象脚本,例如:

CREATE TABLE [$(schema)].Table1 ...
CREATE PROCEDURE [$(schema)].Proc1...

然后你将它执行为:

sqlcmd -v schema ="Customer1" -i c:\script.sql

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 2020-01-17
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多