2009-04-01 10 views
0

Nous utilisons actuellement iBatis et nHibernate sur le même site Web. Exécution d'une sauvegarde sur une page spécifique provoque l'erreur suivante d'être jeté:Mise au point de l'erreur .Net OracleClient

System.Data.OracleClient.OracleException: ORA-01453: SET TRANSACTION doit être la première déclaration de transaction

trace de la pile est affiché à la fin de cette question. Cela se produit uniquement sur cette page (au moins que nous avons vu.)

Le code est assez basique, en appelant BeginTransaction après avoir vérifié qu'il n'existe pas actuellement une transaction active. Je suis perplexe et cherche des idées: 1. Ce qui pourrait causer le problème 2. Comment déboguer/dépanner - (par exemple: est-il un moyen d'espionner les commandes envoyées à Oracle via le System.Data.OracleClient ?)

Nous vous remercions de votre aide.

System.Data.OracleClient.OracleConnection.CheckError (OciErrorHandle errorHandle, Int32 rc) 304.553 System.Data.OracleClient.OracleCommand.Execute (OciStatementHandle StatementHandle, le comportement CommandBehavior, Boolean needRowid, OciRowidDescriptor & rowidDescriptor, ArrayList & resultParameterOrdinals) 990 System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal (Boolean needRowid, OciRowidDescriptor & rowidDescriptor) 431 System.Data.OracleClient.OracleCommand.ExecuteNonQuery() 115 System.Data.OracleClient.OracleTransaction..ctor (connexion OracleConnection , IsolationLevel isolationLevel) +377 System.Data.Oracl eClient.OracleInternalConnection.BeginOracleTransaction (IsolationLevel il) 101 System.Data.OracleClient.OracleInternalConnection.BeginTransaction (IsolationLevel il) 4 System.Data.OracleClient.OracleConnection.BeginDbTransaction (IsolationLevel isolationLevel) 63 System.Data.Common. DbConnection.System.Data.IDbConnection.BeginTransaction (IsolationLevel isolationLevel) 10 NHibernate.Transaction.AdoTransaction.Begin (IsolationLevel isolationLevel) +176

Répondre

0

Assurez-vous de désactiver le mode autocommit. En outre, certaines instructions ne peuvent pas être envoyées dans un lot (par exemple, DDL). Pour celles-ci, vous devez les envoyer séparément ou utiliser execute_sql

Questions connexes