Azure SQL不支持弹性事务

时间:2017-10-12 05:16:44

标签: sql-server azure-sql-database msdtc

最近我们正在将我们的SQL Server数据库迁移到Azure SQL数据库,但即使我们根据Microsoft文档here中提供的指导我们将Web应用程序构建到目标.net框架4.6.1,它也不支持事务。我们在同一个数据库中使用MSDTC事务而不是共享数据库,是什么原因?我在这里错过了任何配置设置吗?

实际上,我没有收到任何错误,但事务不起作用且没有回滚,允许部分数据保存。

当我在Azure SQL DB上检查事务时,它显示当时没有发生任何事务。相同的代码适用于我的本地数据库,我能够看到当前正在运行的事务和未提交时回滚的事务。

以下是详细信息。

我在VisualStudio中将目标框架设置为4.6.2并在我的web.config中更新了相同的内容。 示例代码:

using (var scope = new TransactionScope())
                {
                    using (var aoContext = new AOCrowdFundEntities())
                    {

                        //do somthing

                        aoContext.SaveChanges();

                        throw new Exception();
                        scope.Complete();
                    }

                }

当我在抛出错误之前有一个断点并运行以下查询来查看当前事务时,它会显示一个空列表。

即使我在未提交事务的情况下抛出错误,数据也会保存在Azure DB中。 : - (

2 个答案:

答案 0 :(得分:0)

Azure SQL数据库当前不支持分布式事务,如本documentation page中所述。若要使用Microsoft分布式事务处理协调器(MSDTC),请在虚拟机上运行的SQL Server实例上部署数据库。

答案 1 :(得分:0)

我错过了从DB连接字符串中删除设置(Enlist = false),这是为了支持MSDTC事务而引入的。请参阅下文以了解更多详情,

what is Enlist=false means in connection string for sql server?