我正在尝试使用TransactionScope,但不断得到下面的exception。 该应用程序运行在不同于数据库的机器上,如果这很重要的话。 我正在使用Sql Server 2005。 “分布式事务pipe理器(MSDTC)的networking访问已被禁用,请使用组件服务pipe理工具在MSDTC的安全configuration中启用DTC进行networking访问。 using (TransactionScope tsTransScope = new TransactionScope()) { //Do stuff here tsTransScope.Complete(); } 编辑 我根据反馈做出了一些反应。 现在我得到这个错误: {"Error HRESULT E_FAIL has been returned from a call to a COM component."} {"Communication with the underlying transaction manager has failed."} 解决scheme我认为接受的答案确定了我所得到的最初的问题。 第二个错误似乎是特定于entity framework。 我会张贴另一个问题。 以下是客户端的属性: 客户端http://www.portnine.com/datahttp://img.dovov.comMisc/client.jpg 以下是服务器上的属性: 服务器http://www.portnine.com/datahttp://img.dovov.comMisc/server.jpg
假设我有一个由多个独立的SELECT,INSERT,UPDATE和DELETE语句组成的存储过程。 没有明确的BEGIN TRANS / COMMIT TRANS / ROLLBACK TRANS逻辑。 SQL Server将如何处理这个存储过程事务明智? 每个陈述会有一个隐含的联系吗? 或者是否会有一个存储过程的事务? 另外,如何使用T-SQL和/或SQL Server Management Studio自己find这个问题? 谢谢!
我正在尝试使用新的asynchronous/等待function与数据库asynchronous工作。 由于一些请求可能是冗长的,我希望能够取消它们。 我遇到的问题是, TransactionScope显然有一个线程亲和力,似乎取消任务时,它的Dispose()运行在一个错误的线程。 特别是,当调用.TestTx()我得到以下AggregateException在task.Wait ()上包含InvalidOperationException : "A TransactionScope must be disposed on the same thread that it was created." 代码如下: public void TestTx () { var cancellation = new CancellationTokenSource (); var task = TestTxAsync ( cancellation.Token ); cancellation.Cancel (); task.Wait (); } private async Task TestTxAsync ( CancellationToken cancellationToken ) { using ( […]
Connection.setTransactionIsolation(int)警告: 注意:如果在事务中调用此方法,则结果是实现定义的。 这提出了一个问题: 你如何在JDBC中开始一个事务? 清楚如何结束交易,而不是如何开始交易。 如果Connection在事务内部开始,我们应该如何在事务之外调用Connection.setTransactionIsolation(int)以避免特定于实现的行为?
我是JTA新手,它是基础交易经理。 任何人都可以解释每个这样的利弊吗? 随意添加我没有在标题中列出的其他人。 另外,不要主要的应用程序服务器(WebSphere,JBoss,Glassfish)有自己的符合JTA的事务pipe理器吗? 在那些环境中,你还会使用这些第三方实现吗?
关于这个话题已经有几个问题了,但是没有任何回应真的提供了论据来解释为什么我们不应该使Spring MVC控制器成为Transactional 。 看到: 事务不能正常工作 – Spring / MyBatis 对于Web MVC Spring应用程序应该@Transactional去控制器或服务? 制作Spring 3 MVC控制器方法Transactional Spring MVC控制器事务 所以为什么? 有不可克服的技术问题吗? 有build筑问题吗? 是否有性能/死锁/并发问题? 有时需要多个独立的交易? 如果是,那么用例是什么? (我喜欢简化的devise,调用服务器要么完全成功,要么完全失败,这听起来是一个非常稳定的行为) 背景:几年前,我在一个团队中工作了一个在C#/ NHibernate / Spring.Net中实现的相当庞大的ERP软件。 服务器的往返是这样实现的:事务在进入任何控制器逻辑之前被打开,并在退出控制器之后被提交或回滚。 交易是在框架内pipe理的,所以没有人需要关心它。 这是一个绝妙的解决scheme:稳定,简单,只有less数架构师不得不关心交易问题,其余的团队只是实现了function。 从我的angular度来看,这是我所见过的最好的devise。 当我尝试用Spring MVC重现相同的devise时,我进入了懒惰加载和事务问题的噩梦,每次都有相同的答案:不要使控制器事务,但为什么? 预先感谢您的build议答案!
长版本: 我是erlang的新手,并考虑将其用于可扩展的体系结构。 我发现这个平台的许多支持者都鼓吹其可靠性和容错性。 然而,我很难理解在这个系统中如何实现容错,在这个系统中消息在瞬态存储器中排队。 我明白,可以安排一个主pipe层级来重生死亡的进程,但是我一直没有find关于重新进行的进程的影响的讨论。 飞行中的消息和部分完成的工作在垂死的节点上丢失了什么? 当消费者stream程死亡时,所有的生产者是否都会自动转发消息? 如果不是的话,这怎么可以被认为是容错? 如果是这样,什么阻止了一个被处理的消息 – 但不是很确认 – 被转发,因此被不适当地重新处理? (我认识到这些问题并不是erlang所特有的,在任何分布式处理系统中都会出现类似的问题,但是erlang的爱好者似乎声称这个平台使得这一切都变得“容易” 假设消息被重新传输,我可以很容易的想象一个情况,即一个复杂的消息传递链的下游影响可能在故障后变得非常混乱。 如果没有某种沉重的分布式事务系统,我不明白如何在不重复每一个过程的情况下保持一致性和正确性。 我的应用程序代码是否必须始终强制执行约束以防止事务被多次执行? 简洁版本: 分布式erlang进程是否受到重复消息的影响? 如果是这样,重复保护(即幂等)应用责任,或者erlang / OTP以某种方式帮助我们呢?
也许我想在这里解释没有任何意义,所以我想提前道歉。 无论如何,我会尝试。 我试图从文件读取,执行一些数据库操作,并将内容移动到另一个文件。 我想知道是否可以在Java中以primefaces方式执行所有这些操作,因此如果在操作列表中出现任何错误,请回滚完整序列并返回到起始点。 在此先感谢您的帮助。
使用ADO.NET的SQL Server的默认事务隔离级别是什么? 我正在使用SQL Server的默认安装,只是正常的System.Data.SqlClient类。
关于使用事务从数据库中读取似乎有很不同的意见。 引用来自DeveloperWorks的文章交易策略:模型和策略概述 : 如果你只是读数据,为什么你需要一个交易? 答案是你没有。 启动事务以执行只读操作会增加处理线程的开销,并可能导致数据库上的共享读取locking(取决于您使用的数据库types以及隔离级别设置为什么)。 相反的观点是从Hibernate文档非事务性数据访问和自动提交模式引用如下 我们的build议是,不要在应用程序中使用自动提交模式,只有在有明显的性能好处或未来的代码更改不太可能时,才应用只读事务。 无论您是读取还是写入数据,始终都希望定期使用ACID事务来对您的数据访问操作进行分组。 EclipseLink邮件列表在这里也有类似的争论。 那么真相在哪里呢? 是否阅读最佳做法的交易? 如果两者都是可行的解决scheme,使用交易的标准是什么? 据我所见,只有当隔离级别高于“读取提交”时才会有所作为。 它是否正确? 有什么经验和build议?