2009-04-01 13 views
0

Wir verwenden derzeit iBatis und nHibernate auf der gleichen Website. Durchführen einer auf einer bestimmten Seite speichern bewirkt, dass der folgende Fehler ausgelöst werden:Debugging .Net OracleClient Fehler

System.Data.OracleClient.OracleException: ORA-01453: SET TRANSACTION muss erste Mitteilung der Transaktion

Stapel Spur am Ende angezeigt wird von dieser Frage. Dies passiert nur auf dieser einen Seite (zumindest die, die wir gesehen haben).

Der Code ist ziemlich einfach, Aufruf BeginTransaction nach der Überprüfung, dass es derzeit keine aktive Transaktion gibt. Ich bin ratlos und auf der Suche nach Ideen: 1. Was könnte das Problem verursachen 2. Wie Debuggen/Troubleshoot - (zum Beispiel: gibt es eine Möglichkeit, bei den Befehlen zu schnappen über Oracle System.Data.OracleClient gesendet wird ?)

Vielen Dank für jede Hilfe.

System.Data.OracleClient.OracleConnection.CheckError (OciErrorHandle errorHandle, Int32 rc) 304.553 System.Data.OracleClient.OracleCommand.Execute (OciStatementHandle Statement CommandBehavior Verhalten, 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 (OracleConnection Verbindung , IsolationLevel isolationLevel) +377 System.Data.Oracl eClient.OracleInternalConnection.BeginOracleTransaction (Isolation il) +101 System.Data.OracleClient.OracleInternalConnection.BeginTransaction (Isolation il) +4 System.Data.OracleClient.OracleConnection.BeginDbTransaction (Isolationisolation) +63 System.Data.Common. DbConnection.System.Data.IDbConnection.BeginTransaction (Isolationisolation) +10 NHibernate.Transaction.AdoTransaction.Begin (Isolationisolation) +176

Antwort

0

Stellen Sie sicher, autocommit auszuschalten. Außerdem gibt es einige Anweisungen, die nicht in einem Stapel gesendet werden können (z. B. DDL) - für diese müssen Sie sie entweder separat senden oder execute_sql

verwenden