事务提交未提交且未引发错误

Posted

技术标签:

【中文标题】事务提交未提交且未引发错误【英文标题】:Transaction Commit Not Committing and No Errors were thrown 【发布时间】:2014-02-26 16:18:17 【问题描述】:

背景:

我开发了一个包含业务逻辑类和数据访问逻辑类的类库项目。

我正在使用 Microsoft SQL Server 2012 数据库 (express) 来保存我的数据。

业务逻辑类具有执行验证的保存方法和任何必要的预保存逻辑。一旦验证和预保存成功,save 方法使用数据访问层方法创建一个与数据库的新连接的事务,并使用 DataAdapters 更新我的数据库。

我一直在 WPF 项目中使用这些类,并且 100% 的时间都可以正常工作。

我现在正在开发一个 ASP.NET MVC 3 项目,以创建同一应用程序的 Web 版本。我在 ASP.NET 应用程序中使用与 WPF 应用程序相同的类库。

我在所有项目中都使用 VB.NET 来实现。

问题:

我的一个类没有使用从我的 ASP.NET 应用程序更改的数据更新数据库。

我已经从 UI 层一直到数据访问层逐步执行了保存逻辑,并且一切都已正确设置,并且事务提交不会引发任何异常或指示任何错误但是 该信息未在数据库中设置

我已确保使用数据修改了行,调用了 DataAdapter Update 方法,调用了事务提交方法......一切看起来都很好,没有抛出错误。我尝试了 ASP.NET 应用程序使用的其他类,发现它们的保存非常好地提交到数据库(这些类使用与有问题的类相同的设计来保存数据)。我还尝试从我的 WPF 应用程序中对有问题的类调用 save 方法,一切正常(提交实际上将数据提交到数据库)。

我现在完全不知所措,不知道如何解决我的问题。

请给我一些关于如何调试这个问题的想法!

我不打算发布代码,因为要求人们查看它太过分了。我只是在寻找有关如何调试此问题的建议以及有关如何检查其他人是否遇到此问题的任何建议。

【问题讨论】:

您是否尝试过对数据库使用 SQL Profiler 来捕获对数据库的实际调用?另外,您是否在数据库中调用存储过程,这些存储过程是否设置 XACT_ABORT ON ? 我使用的是 SQL Express,所以我没有那个选项。我尝试使用 sp_who 存储过程,但对我没有多大帮助。 我正在调用存储过程来保存我的信息。 @Frinavale 对于分析器,请参阅***.com/a/14496289/870604 我建议你看看这个:***.com/questions/11382105/… 【参考方案1】:

您可以做的最好的事情是运行 SQL Server 分析器实例来查看数据库级别发生的情况。

由于您使用的是 2012 Express 版本的 SQL Server,请参阅this link,以便您可以获取 SQL Server 分析器。

【讨论】:

以上是关于事务提交未提交且未引发错误的主要内容,如果未能解决你的问题,请参考以下文章

事务隔离级别

事务的隔离级别

面试八股文-MYSQL隔离模式

事务特性

生产问题一则:MySQL隔离级别引发的数据读取失败问题

生产问题一则:MySQL隔离级别引发的数据读取失败问题