问题标签 [transactionscope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2117 浏览

tsql - 内部事务范围错误:“与底层事务管理器的通信失败”

我不确定我是否正确地执行了这些操作。是因为我打开了两个连接吗?无论错误如何,我都会关闭它们。我确实尝试放入一些内部事务范围并将第二个设置为RequiresNew. 这两种方法彼此独立,但是,如果一种方法失败,我需要它们都回滚。我觉得我可能需要修改创建和关闭连接的方式。有什么想法吗?这是我正在做的一些示例代码:

0 投票
6 回答
20456 浏览

nhibernate - NHibernate 与 TransactionScope

谁能给我一个快速概述使用 NHibernate 的 TransactionScope?我需要对 session/IEnlistmentNotification/等做任何特别的事情吗?让它工作?有什么我应该担心的陷阱吗?例如,我可以替换我所有的休眠事务:

有了这个?:

0 投票
1 回答
1093 浏览

nhibernate - 使用 Rhino Commons UnitOfWork 为集成测试嵌套事务范围

我正在尝试设置一个集成测试类,将每个测试包装在一个事务中。这样我可以在每次测试后回滚事务,而不是在每次测试前重置数据库。

我还希望能够在集成测试本身中使用事务。

我正在为该项目使用 NHibernate 和 Rhino Commons UnitOfWork。我正在使用 MSTest 进行测试。

我想要这样的东西:

这是我第一次使用 NHibernate、Rhino Commons 和 MSTest。我不清楚嵌套 Rhino CommonsUnitOfWork的会话行为。我在这里所拥有的不会回滚集成测试中的更改。

我尝试使用TransactionScopefrom ,但在s 结束System.Transactions时出现以下错误:UnitOfWork

System.InvalidOperationException:事务正在进行时无法调用断开连接。

所以这是我的问题:
有没有办法在 Rhino Commons 中使用 UnitOfWork 获得这种行为?如果不是,我应该在每次测试之前重置数据库,还是有另一种方法可以嵌套与 UnitOfWork 配合得很好的事务?

谢谢你。

0 投票
2 回答
15004 浏览

.net - TransactionScope 和多线程

我想知道在处理多线程时如何以正确的方式使用 TransactionScope 类?

我们在主线程中创建了一个新范围,然后生成了几个工作线程,我们希望它们参与主范围,例如,如果范围从未完成,则在每个工作线程上调用回滚。

我在内部使用 ThreadStaticAttribute 阅读了有关 TransactionScope 的一些内容,这使得上述不可能/非常困难 - 有人可以验证任何一种方式吗?如果我们以同步方式运行我们的代码,那么回滚工作,即内部事务能够参与主事务,但如果我们切换到线程执行则不能。

0 投票
2 回答
19877 浏览

sql-server-2008 - TransactionScope 和隔离级别

我们在使用 TransactionScope 时遇到问题。TransactionScope 为我们提供了很好的灵活性,可以在我们的数据访问层中使用事务。通过这种方式,我们可以使用隐式或显式事务。再次 ADO.NET 事务有一些性能提升,但此时这并不是真正的问题。但是我们有锁定问题。在下面的示例代码中,虽然隔离级别设置为 ReadCommitted,但无法从其他客户端对表 testTable 进行 Select SQL 语句,直到主事务(在 Main 方法中)将被提交,因为整个表都有锁。我们还尝试在所有方法中仅使用一个连接,但行为相同。我们的 DBMS 是 SQL Server 2008。有什么我们不明白的地方吗?

问候安东卡尔奇克

请参阅此示例代码:

0 投票
2 回答
6077 浏览

linq - TransactionScope、linq 和奇怪的事务管理器问题 (HRESULT: 0x8004D024)

我有一个服务级别的方法,它对数据库进行很少的更改,我希望它们使用事务控制。此类方法可以执行以下操作: - LINQ SubmitChanges() 功能 - 调用 StoredProcedures

组件用户可以将一组这样的基本操作组合成更大的东西。

我看到有一个不错的类 TransactinScope 并尝试使用它:

我的假设是在外层可以添加另一个级别的事务范围。相反,我遇到以下错误:

事务管理器已禁用对远程/网络事务的支持。(来自 HRESULT 的异常:0x8004D024)

我正在为 MS SQL 2005 和微软开发服务器使用相同的(Vista Ultimate)机器。从单元测试一切正常。TransactionScope 评论时相同。

我试图使用 DTC ( http://support.microsoft.com/kb/899191 ) 的安全性,当我设置接受所有入站和出站事务时,我收到以下错误消息:

对 COM 组件的调用已返回错误 HRESULT E_FAIL。

在调试过程中,我发现在 SubmitChanges 中,Linq Entity Context 有 Property Transaction IS NULL(!!),而 System.Transactions.Transaction.Current 有打开事务

0 投票
2 回答
4914 浏览

c# - HRESULT:0x8004D00E 使用 TransactionScope - C#

当我尝试在连接到 SQL Server 2000 的 Windows Server 2003 Standard Edition SP1 计算机上运行 C# WinForms 应用程序时收到以下错误,转换 WinForms 应用程序中的数据并将转换后的数据插入 SQL Server 2005 应用程序。我正在使用 SSPI 连接到每个数据库。

代码包含在 TransactionScope 块中:

错误信息:

例外:事务已被隐式或显式提交或中止。

内部异常:事务已被隐式或显式提交或中止(来自 HRESULT 的异常:0x8004D00E)

任何人都知道可能导致此问题的原因是什么?

0 投票
1 回答
10384 浏览

c# - 试图了解 TransactionScope

我正在尝试制作一个快速的虚拟应用程序,以便了解 System.Transactions 的来龙去脉。这个应用程序与 2 个不同的 SQLExpress DB 交互。如果我在组件服务中提取我的事务统计信息,我可以看到在打开第二个连接时在 outerScope 中启动了一个事务。如果 failOuter 为真,则事务中止,但不会引发任何异常。当 failInner 为真时,会抛出 TransactionAbortedException。

来自 MSDN:

当您的应用程序完成它想要在事务中执行的所有工作时,您应该只调用一次 Complete 方法来通知事务管理器可以接受提交事务。将 Complete 调用作为 using 块中的最后一条语句是非常好的做法。

未能调用此方法会中止事务,因为事务管理器将此解释为系统故障,或等效于事务范围内抛出的异常。

如果作用域创建事务并且事务被中止,则会引发 TransactionAbortedException。

基于此,我希望我的 outerScope 会抛出 TransactionAbortedException,因为每次我运行我的应用程序并将 failOuter 设置为 true 时,我的事务统计信息都会显示一个中止的事务。我的方法返回 true,因为即使事务中止也不会引发异常。除非我中止内部事务,否则它的行为与我预期的一样。任何澄清将不胜感激。

0 投票
3 回答
3778 浏览

c# - TransactionScope 超时怪异与 TransactionScopeOption.RequiresNew

这里发生了一些非常奇怪的事情。

我刚刚在我正在调试的一些遗留代码周围添加了一个事务范围,以确保我正在做的摆弄不会被提交。

这工作了两次,然后说:

在工作/非工作之间没有任何代码更改或重建(字面意思是连续 3 个 F5 [网络应用程序])。这是连接到删除数据库服务器的本地代码。

因此,不同项目中完全独立的代码会超时。如果我从此代码中删除 transactionScopes,它运行良好,但在它们到位时它会超时。我已经尝试过我的本地 SQL 服务器和远程服务器,它们都在事务范围内超时。

这到底是怎么回事?

编辑:我发现将我的 TransactionScopes 更改为:

防止问题:s

这是什么意思?

0 投票
7 回答
43652 浏览

c# - 如何在 C# 中使用 TransactionScope?

我正在尝试使用TransactionScope,但不断收到以下异常。
该应用程序运行在与数据库不同的机器上,如果这很重要的话。我正在使用 SQL Server 2005。

分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 以进行网络访问。

编辑

我根据反馈做了一些修改。现在我收到此错误:

“对 COM 组件的调用已返回错误 HRESULT E_FAIL。”
“与底层事务管理器的通信失败。”

解决方案 我认为接受的答案解决了我遇到的最初问题。第二个错误似乎特定于实体框架。我会为此发布另一个问题。

以下是客户端的属性:
客户端 http://www.portnine.com/data/images/Misc/client.jpg

以下是服务器上的属性:
服务器 http://www.portnine.com/data/images/Misc/server.jpg