Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sql事务失败_C#_Sql Server_Transactionscope - Fatal编程技术网

C# Sql事务失败

C# Sql事务失败,c#,sql-server,transactionscope,C#,Sql Server,Transactionscope,在数据库中插入记录时出现以下错误 System.Transactions.TransactionException: The operation is not valid for the state of the transaction. ---> System.TimeoutException: Transaction Timeout --- End of inner exception stack trace --- at System.Transactions.Trans

在数据库中插入记录时出现以下错误

System.Transactions.TransactionException: The operation is not valid for the state of the transaction. ---> System.TimeoutException: Transaction Timeout
   --- End of inner exception stack trace ---
   at System.Transactions.TransactionState.EnlistPromotableSinglePhase(InternalTransaction tx, IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Transaction atomicTransaction)
   at System.Transactions.Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification)
   at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
   at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
实际上,我是通过事务作用域方法在数据库中插入数据的,下面描述了其代码

TransactionOptions tOptions = new TransactionOptions();
tOptions.IsolationLevel = IsolationLevel.ReadCommitted;
tOptions.Timeout = TransactionManager.MaximumTimeout;
using (var transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew, tOptions))
{
}
上面的陈述有什么不正确的地方吗

这里要提到的一点是,我正在批量插入至少10个包含大量记录的表中的数据,并且表还允许在批量插入中插入重复记录,用于实现这一点的语法如下所述

CREATE UNIQUE INDEX Index_a ON table1([c1], [c2]) WITH IGNORE_DUP_KEY

如果有人能帮我解决这个问题,我将不胜感激。

您似乎有未提交的交易。尝试重新启动Sql Server或Oracle服务。

问题是MSDTC服务已禁用,而我正在使用批量数据库操作。启用后,问题得到解决。

您使用的连接超时是什么?请尝试将代码放入Try-catch块,并在调试器中检查异常。我已经这样做了,有时会得到更多关于这个问题的详细信息,比如在不可为NULL的字段中插入NULL,诸如此类的事情。如果在没有事务的情况下运行它,您的操作会成功吗?如果是,在没有交易的情况下需要多长时间才能完成?您是否有多个交易?可能另一个事务正在运行,因此不允许多个事务。。。导致超时。