Tag: msdtc

来自Machine.Config的maxTimeout值未被C#winform应用程序获取

我一直在使用Oracle 10g数据库的winform应用程序,它正在使用TransactionScope并想修改machine.config文件中指定的maxTimeOut值,我的machine.config文件位于以下位置(我正在使用.net 4这个应用程序) C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 最初没有为maxTimeOut指定任何内容,因此它默认为10分钟。 为了更改它,我添加了maxTimeout=”00:00:10″值,如下所示: 我重新启动了PC并运行了一个持续时间超过此时间的测试 – 但是事务在10秒后似乎没有中止,而是使用了TransactionScopeOption参数中指定的scopeOption.TimeOut值(5分钟)并且事务超时5分钟后。 我是否已将maxTimeout值包含在上方的正确位置? 文件中是否有任何需要更改的内容? 为什么没有使用machine.config中maxTimeout的值? 谢谢

ADOentity framework是否支持非DTC交易? 一个EntityContext和一个TransactionScope内的多个查询导致DTC升级

我有一个使用entity framework的Web应用程序 – 我们使用TransactionScope类来提供环境事务。 有没有办法告诉EF使用标准T-SQL事务优先于DTC事务? 我们经常在一个EntityContext和一个TransactionScope实例中对不同的表进行大量查询,但这似乎总是将事务提升到DTC 我举了一个简短的例子,见下文。 对单个表的查询正确地启动了一个T-SQL事务并且在连接SPID 54上然后查询到ContactUs表并且EF在另一个连接(SPID 53)上执行此操作,该连接具有促进事务的连接效果到DTC交易。** using (MyEntities DB = new MyEntities()) { using (TransactionScope t = new TransactionScope()) { DB.Individual.First().EmailAddress = “bob” + DateTime.Now.Second.ToString() + “@bob.com”; // done on connection 54 DB.ContactUs.First(); // done on connection 53 thus promoting the transaction!! DB.SaveChanges(); t.Complete(); } }

TransactionScope – 基础提供程序在EnlistTransaction上失败。 MSDTC被中止

我们的团队遇到的问题表现为: 基础提供程序在EnlistTransaction上失败; 无法访问已处置的对象。对象名称:’Transaction’。 一旦我们开始使用TransactionScope来处理我们的应用程序的事务,它似乎就出现了。 堆栈跟踪的顶部部分被捕获为: 在System.Data.EntityClient.EntityConnection.EnlistTransaction(事务事务)处的System.Data.Objects.ObjectContext.EnsureConnection()处于System.Data.Objects.ObjectContext.ExecuteStoreCommand(String commandText,Object [] parameters)处于Reconciliation.Models。在EntityDbEnvironment.cs中的Reconciliation.Models.Legacy.EntityDbEnvironment.ExecuteOracleSql(String sql)中的BillLines.BillLines.Reconciliation.Interfaces.IBillLineEntities.ExecuteStoreCommand(String,Object []):第41行 同时更新MSDTC日志,我使用此处的说明提取了该日志: pid=7060 ;tid=7908 ;time=04/29/2013-16:38:30.269 ;seq=136 ;eventid=TRANSACTION_BEGUN ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;”TM Identifier='(null) ‘” ;”transaction has begun, description :”” pid=7060 ;tid=7908 ;time=04/29/2013-16:38:30.269 ;seq=137 ;eventid=RM_ENLISTED_IN_TRANSACTION ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;”TM Identifier='(null) ‘” ;”resource manager #1002 enlisted as transaction enlistment #1. RM guid = ‘defc4277-47a6-4cd9-b092-93a668e2097b'” pid=7060 ;tid=7908 ;time=04/29/2013-16:38:31.658 ;seq=138 ;eventid=RECEIVED_ABORT_REQUEST_FROM_BEGINNER ;tx_guid=60f6390c-7570-488a-97a9-2c3912c4ca3e ;”TM Identifier='(null) […]

没有DTC的TransactionScope替代方案

有什么替代transactionScope不需要启用DTC ?? 在交易中,我需要做两个操作: 创建一个用户(使用成员资格–sql成员资格提供者) 做一次插入操作。

“TransactionInDoubtException”exception导致我的事务的完整性丢失

我有一个代码尝试插入作用于MSDTC事务的条目,如果有插入失败,则重试插入到特定阈值。 这是代码: while(!SaveToDb){ ……. Thread.Sleep(TimeSpan.FromMinutes(AppConfiguration.RetryInsertionDuringFailureIntervalInMin)); } private bool SaveToDb() { try { …… using (var scope = new TransactionScope(TransactionScopeOption.Required, option)) { Context.SaveEmail(_emailInfoList); Context.SaveSyncState(syncState); scope.Complete(); return true; } } catch (Exception ex) { …….. return false; } } 并且遇到了这个exception: 消息:该交易存在疑问。 堆栈跟踪:System.Transactions.TransactionStatePromotedIndoubt.PromotedTransactionOutcome(InternalTransaction tx),位于System.Transactions.CommittableTransaction.Commit(),位于System.Transactions.TransactionScope.InternalDispose(),位于System.Transactions.TransactionScope.Dispose(),位于Presensoft.Exchange2010Puch。 Core.PushJob.SaveEmailAndSyncState()InnerException:System.Data.SqlClient.SqlException(0x80131904):超时已过期。 操作完成之前经过的超时时间或服务器没有响应。 —> System.ComponentModel.Win32Exception(0x80004005):在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning的System.Data.SqlClient.SqlInternalConnection.OnError(SqlExceptionexception,布尔breakConnection,Action`1 wrapCloseInAction)中等待操作超时(TdsParserStateObject stat eObj,Boolean callerHasConnectionLock,Boolean asyncClose)System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()上的System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj,UInt32错误) 在System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() 在System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte&value) 在System.Data.SqlClient.TdsParser.TryRun(RunBehavior […]

使用Transactional NTFS(TxF)获得任何真实的企业级体验?

背景: 我知道关于Transactional NTFS(TxF)和本文描述如何使用它的这个问题,但是我正在寻找具有大量blob数据的合理大批量企业系统的 实际经验 (比如文档和/或照片)需要在交易后持久并多次阅读 。 我们期待每天写入数万个文档,每小时读取几万个文档。 我们可以在文件系统或SQL Server中存储索引,但必须能够在几个框中扩展它。 我们必须保留为灾难恢复轻松备份和恢复数据的能力。 问题: 使用Transactional NTFS(TxF)获得任何真实的企业级体验? 相关问题: 有人尝试使用TxF进行分布式事务,同一文件同时提交给两个镜像服务器吗? 有人尝试过使用文件系统和数据库的分布式事务吗? 您可以分享任何性能问题/可靠性问题/性能数据? 在交易成为问题之前,有没有人甚至做过这种规模的事情? 编辑 :为了更清楚,我已经研究了其他技术,包括SQL Server 2008的新FILESTREAM数据类型,但是这个问题仅针对事务文件系统 。 更多资源: 有关TxF的MSDN杂志文章称为“使用文件系统事务增强您的应用程序” 。 一个名为“Transactional Vista:内核事务管理器和朋友(TxF,TxR)”的网络广播。 这段video引用了使用2-5%的TxF的开销,性能讨论开始大约25分钟。这是我发现的第一组硬数字。 这段video非常好地概述了它如何在幕后工作。 在大约34:30,演讲者描述了与这个问题非常相似的情景。 频道9的截屏video名为“Surendra Verma:Vista Transactional File System” 。 他在35分钟左右开始谈论表现。没有硬数据。 B#.NET博客上的TxF文章列表。 频道9的截屏video称为“事务性NTFS” 。