我目前正在开发一款应用,首先要求用户通过网站(ASP.NET)创建帐户才能使用该应用。出于特殊原因,我需要在托管的SQL Server上为每个创建帐户的客户自动生成数据库。所有客户的数据库都是相同的。
我正在考虑这样做:因为我有创建数据库的脚本,我想将它插入存储过程或触发器,一旦用户完全创建了他的帐户就会启动它。
我没有真正看到其他解决方案,也许有人可以给我一些指导方针?提前谢谢。
答案 0 :(得分:1)
我认为这样的设计已被证明无法扩展。我建议重新设计架构,以允许单个数据库中的多个客户。
亚马逊没有这样的事情。你也不应该。
答案 1 :(得分:1)
我同意duffymo你会遇到可扩展性问题。
但是,在某些情况下,您可能更喜欢使用单独的数据库作为多租户数据方法。
在我上一个项目中,我不得不采用单独的数据库方法,因为业务需要为每个客户完全隔离。这是一个学校管理系统,预计5到10年内客户数量不会超过三位数。
所以我设计的解决方案是,我使用了Entity Framework代码的第一种方法。每所学校都有一个唯一的学校标识符,用于为每所学校唯一地命名数据库。连接字符串显然是在运行时生成的。连接工厂用于根据传递的学校标识符创建适当的DataContext。如果不存在,则在首次使用时创建数据库。同时执行SQL脚本以在数据库创建期间创建数据库用户(如果不存在)。
如果这种方法听起来很有吸引力,我可以共享代码段,如果有帮助的话。