您好我们正在构建一个多租户解决方案,每个租户都有自己的数据库。 我们会将有关租户的信息保存在索引数据库中。 创建租户时,将执行以下步骤。
创建Tenant类,将其保存到数据库,在该数据库中将获得一个增量编号,该编号将用于命名我们将创建的数据库。 使用增量编号创建数据库。 然后更新数据库架构。
这根本不是问题,问题是如果某些第二阶段会抛出异常。然后我们想要回滚租户的保存。我们可以在更大的交易中做到这一点。为了能够使用增量数,我们被迫提交事务来获取它。我们应该使用任何其他命名策略吗?
想法?
答案 0 :(得分:0)
来自MSDN:
CREATE DATABASE语句必须以自动提交模式(默认事务管理模式)运行,并且不允许在显式或隐式事务中使用。
(这也适用于ALTER DATABASE
。)
但是,如果你的应用程序逻辑决定操作失败(注意:尽可能早地在逻辑中移动尽可能多的检查),你可以简单地DROP DATABASE
代替(并回滚索引数据库事务),因为下一次尝试应该可能重建整个事情。无论如何,这不是一个理想的解决方案,但你必须解决我上面引用的约束。