Использование TransactionScope с System.Data.OracleClient - TransactionAbortedException - PullRequest
2 голосов
/ 16 августа 2010

Моя система записывает некоторые данные в БД SQL Server (2008), извлекает их позже и еще обрабатывает, прежде чем записывать в БД Oracle (10g).

Я завернул свои взаимодействия с SQL Server в TransactionScope, но когда я пытаюсь сделать то же самое, подумайте о моих взаимодействиях с Oracle, я получаю `TranactionAbortedException -" Транзакция прервана ".

Удалите TransactionScope, и все работает нормально.

Я всегда мог вернуться к ручному управлению своими собственными транзакциями, но я надеюсь, что есть простое решение.

Пример кода:

private static void OracleTest()
    {           
        using (TransactionScope ts = new TransactionScope())
        {
            using (OracleConnection conn = new OracleConnection(connString))
            {
                try
                {
                    using (OracleCommand cmd = new OracleCommand())
                    {
                        cmd.CommandText = "MyPackage.MyFunction";
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.Connection = conn;

                        OracleParameter param = cmd.Parameters.Add(new OracleParameter("field1_", "abc123"));

                        param = cmd.Parameters.Add(new OracleParameter("rs_", OracleType.Cursor));
                        param.Direction = System.Data.ParameterDirection.Output;
                        conn.Open();
                        using (OracleDataReader dr = cmd.ExecuteReader())
                        {

Я не нашел ничего, что указывало бы на то, что вы не можете использовать TransactionScopes с Oracle, но как вы можете видеть из моего примера, мы падаем на первое препятствие (когда мы открываем соединение), поэтому трудно увидеть где я могу пойти не так.

1 Ответ

4 голосов
/ 23 октября 2010

Вы можете взглянуть на это;Мне не очень повезло с TransactionScope в Oracle 10g: http://forums.oracle.com/forums/thread.jspa?messageID=4127323

...