如何使用现有数据库/模式作为模板从Asp.Net应用程序以编程方式部署数据库?

时间:2011-10-24 21:10:12

标签: asp.net sql-server database .net-4.0 multi-tenant

问题:

我正在创建一个Asp.Net应用程序,该应用程序具有多租户数据架构,每个租户都有单独的数据库。当新租户注册时,我需要能够以编程方式从应用程序创建和部署数据库。维护模板数据库/模式/脚本并使用它在服务器上部署新数据库的最佳方法是什么。

注意:

我正在为应用程序使用.Net 4.0,为服务器使用SQL Server 2008 R2。

当前解决方法:

目前,服务器上维护了默认模板数据库。通过Visual Studio对数据库进行更改,以通过源代码控制维护版本控制。需要部署新数据库时:

  1. 使用Database.Create在服务器上创建新数据库。

  2. 然后使用Transfer.TransferData将架构转移到新数据库。或者,使用Transfer.ScriptTransfer并将脚本存储在内存中以供后续部署使用。

1 个答案:

答案 0 :(得分:2)

您的部署应基于从头开始创建数据库的脚本。您所做的任何架构修改,都通过升级数据库架构的脚本来实现。有关该主题的更多扩展讨论,请参阅Version Control and Your Database

基于差异工具的部署的替代方案使您受到关于如何处理差异的工具决策的支配(对于大型表,如果工具决定基于副本的修改,这会变得非常危险)让你受到diff工具对自动化的任何支持的支配,这使得失败/重试处理,我应该怎么做,......“有趣”。