写入数据库并创建数据库时的事务

时间:2010-09-10 10:05:47

标签: .net sql-server

您好我们正在构建一个多租户解决方案,每个租户都有自己的数据库。 我们会将有关租户的信息保存在索引数据库中。 创建租户时,将执行以下步骤。

创建Tenant类,将其保存到数据库,在该数据库中将获得一个增量编号,该编号将用于命名我们将创建的数据库。 使用增量编号创建数据库。 然后更新数据库架构。

这根本不是问题,问题是如果某些第二阶段会抛出异常。然后我们想要回滚租户的保存。我们可以在更大的交易中做到这一点。为了能够使用增量数,我们被迫提交事务来获取它。我们应该使用任何其他命名策略吗?

想法?

1 个答案:

答案 0 :(得分:0)

来自MSDN

  

CREATE DATABASE语句必须以自动提交模式(默认事务管理模式)运行,并且不允许在显式或隐式事务中使用。

(这也适用于ALTER DATABASE。)

但是,如果你的应用程序逻辑决定操作失败(注意:尽可能早地在逻辑中移动尽可能多的检查),你可以简单地DROP DATABASE代替(并回滚索引数据库事务),因为下一次尝试应该可能重建整个事情。无论如何,这不是一个理想的解决方案,但你必须解决我上面引用的约束。