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,诸如此类的事情。如果在没有事务的情况下运行它,您的操作会成功吗?如果是,在没有交易的情况下需要多长时间才能完成?您是否有多个交易?可能另一个事务正在运行,因此不允许多个事务。。。导致超时。