Отладка .Net OracleClient ошибка - PullRequest
       13

Отладка .Net OracleClient ошибка

0 голосов
/ 01 апреля 2009

В настоящее время мы используем iBatis и nHibernate на одном веб-сайте. Выполнение сохранения на определенной странице приводит к появлению следующей ошибки:

System.Data.OracleClient.OracleException: ORA-01453: SET TRANSACTION должен быть первым оператором транзакции

Трассировка стека отображается в конце этого вопроса. Это происходит только на этой странице (по крайней мере, что мы видели.)

Код довольно простой, вызывая BeginTransaction после проверки того, что в данный момент нет активной транзакции. Я в тупике и ищу идеи 1. Что может быть причиной проблемы 2. Как отлаживать / устранять неполадки - (например: есть ли способ отследить команды, отправляемые в Oracle через System.Data.OracleClient?)

Спасибо за любую помощь.

System.Data.OracleClient.OracleConnection.CheckError (OciErrorHandle errorHandle, Int32 rc) +304553 System.Data. System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal (логическое значение NeedRowid, OciRowidDescriptor & rowidDescriptor) +431 System.Data.OracleClient.OracleCommand.ExecuteNonQuery () +115 System.Data.OracleClient.OracleTransaction..ctor (соединение OracleConnection, изоляция уровня изоляции, уровень) +377 System.Data.OracleClient.OracleInternalConnection.BeginOracleTransaction (IsolationLevel il) +101 System.Data.OracleClient.OracleInternalConnection.BeginTransaction (IsolationLevel il) +4 System.Data.OracleClient.OracleConnection.BeginDbTransaction (IsolationLevel изоляционный уровень) +63 System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction (IsolationLevel изоляцияLevel) +10 NHibernate.Transaction.AdoTransaction.Begin (IsolationLevel изоляционный уровень) + 176

1 Ответ

0 голосов
/ 01 апреля 2009

Обязательно отключите автокоммит. Кроме того, есть некоторые операторы, которые нельзя отправить в пакете (например, DDL) - для них вам придется либо отправить их отдельно, либо использовать execute_sql

...