【发布时间】:2012-01-31 11:16:52
【问题描述】:
我已启用 System.Transactions 日志记录:
<system.diagnostics>
<sources>
<source name="System.Transactions" switchValue="Warning">
-- my listeners here
</source>
</sources>
</system.diagnostics>
并看到很多奇怪的日志警告,例如:
- Transaction.Rollback 被调用
- 入伍回调否定
- TransactionScope 不完整
请有人解释一下吗?我的系统按预期工作,并且没有引发 ADO.NET 级别的异常。 DAL 代码是典型的 L2S 代码,没有明确的事务管理或任何 hack。
【问题讨论】:
-
您可以使用 SQL Profiler 查看发送到服务器的 SQL,以便更了解正在发生的事情。没有更多信息,我们很难给出答案。
-
我监控了分析器的输出,没有看到任何罪犯。我认为生成的 SQL 语句与该问题无关,因为即使 SQL 服务器引起了一些警告,它们也无法传播回托管代码,不是吗?
-
这取决于(一如既往)这些警告是由数据库还是由 .NET 代码/L2S 触发的?如果它们是由数据库引起的,您应该检查在那里执行的批次/过程。 (我确实认为它们必须传播给客户端)
-
它可能是您的应用程序上下文中的某个其他进程或第三方库,事务可能用于其他内容,例如ui设计师的visual studio editor也可以在事务中工作,所以很多内部库或进程可能在事务中工作,它是一个什么样的应用程序?桌面、服务还是 asp.net?
-
我只是在这里胡乱猜测——也许 System.Transaction 认为事务将要开始,但事实并非如此。 TransactionScope 似乎是一个试图读懂开发人员思想的 API。此外,尝试将 switchValue 设置为 Verbose 以获得更完整的存储并尝试将一些跟踪输出添加到您自己的代码中以获得更完整的故事(即,您的代码中的哪些事件会导致警告聚集?)
标签: .net sql-server linq-to-sql logging diagnostics