Background Image

FORUM

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7, 2012 Server R2 64bit
CUBRID Ver.
NHibernate for Cubrid
CUBRID TOOL Ver.

응용 환경(API)
.NET, Asp.NET, C#

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------


1. .NET 4.5 에서의 NHibernate 문제점

   - 이후 처리가 불가능하여 이후 어떤점이 문제가 발생할 지 알 수 없으나 .NET 4.0 에서 정상 작동하던 코드가 4.5 에서는 오류를 발생 시킵니다.

   - 샘플 Code : session.QueryOver<CODE_INOUT>().Where(t=>t.C_GRP_CD == "AUTHTYPE").List().ToList();

   - 오류 메시지 

     could not execute query

[ SELECT this_.c_grp_cd as c1_0_0_, this_.c_comn_cd as c2_0_0_, this_.c_comn_cd_nm as c3_0_0_ FROM tb_code this_ WHERE this_.c_grp_cd = ? ]

  Name:cp0 - Value:AUTHTYPE

[SQL: SELECT this_.c_grp_cd as c1_0_0_, this_.c_comn_cd as c2_0_0_, this_.c_comn_cd_nm as c3_0_0_ FROM tb_code this_ WHERE this_.c_grp_cd = ?]

   - 내용 : query 로 변경 중 cp0 에 해당하는 변수를 c_grp_cd 의 조건과 매칭시켜야 하는데 해당 처리중 오류가 발생했다고 보입니다.


2. .NET 4.0 에서 Nhibernate + TransactionScope 의 동시 처리 문제점

   - Nhibernate  ISession 개체의 Flush() 메소드와 System.Transactions.TransactionScope 를 동시에 사용했을 경우 발생하는 문제점 입니다.

   - 샘플 Code: 


      using (var scope = new TransactionScope())

      {

ISession session = ..............................;

             List<AA> test = session.QueryOver<AA>().Where(t => t.C_GRP_CD == "AUTHTYPE").List().ToList();

             foreach (AA dto in test)

             {

                 dto.C_OPT_1 = "OK_" + dto.C_OPT_1;

             }

             session.Flush();

             throw new Exception("test");

             scope.Complete();

      }


   - 위와 같은 코드에서, Oracle / MSSQL 과 같이 분산 트랜잭션이 지원되는(MSDTC 또는 OracleMTS)DB 에서는 

     session.Flush() 메소드가 실행되어도, 이후 scope.Complete() 를 실행하지 못하였기 때문에 DB 의 변경작업이 

     실패 합니다.


      허나, 큐브리드 Hibernate 모듈을 사용하여 CUBRID DB 에 접속 했을 경우, session.Flush() 가 존재하지 않는다면

     scope.Complete() 를 실행여부에 따라 트랜잭션이 정상 처리 됩니다

      이 때, session.Flush() 가 먼저 실행 되었다면 scope.Complete() 의 실행 여부와 관계 없이 DB 변경 작업이 수행되고

      이후 scope.Complete() 를 실행하지 못하고 오류가 발생 하더라도 DB Rollback 은 수행 되지 않습니다.


      즉, session.Flush() 가 먼저 실행되면 TransactionScope 를 무시한다고 볼 수 있겠습니다.


      코드에서 scope.Complete() 실행시에 오류를 발생시키지는 않지만 

      분산트랜잭션을 지원한다고 하는 CUBRID DB 와 TransactionScope 를 사용했을 때 예상 되는 동작이 아니게 되며 

      이에 대해 개발 코드의 변경이 필요 하게 되었습니다.


      

 위 두가지 문제점 에 대한 처리 방안을 문의 드립니다.


그럼 수고 하시고 빠른 답변 부탁 드립니다..





  • ?
    성진 2017.07.06 20:11

    안녕하세요. 큐브리드를 이용해주셔서 감사 합니다.

    1. .NET Framework 4.0/4.5 호환성 문제 테스트 결과 문제 없는 것으로 확인 되었습니다.


    아래와 같이 Nhibernate를 사용해서 demo DB Athlete테이블을 검색하는 경우 

    .NET 4.0/4.5 모두 정상 동작을 확인하였습니다

    CUBRID 9.3.6.0002 및 ADO.Net 드라이버는 9.3.0.0001을 사용했습니다.

     

     using (var session = sessionFactory.OpenSession())

    {

             List<Athlete> athlete = session.QueryOver<Athlete>().Where(t => t.nation_code == "LTU").List().ToList();

     

              Console.WriteLine(

                            string.Format("|{0}|{1}|{2}|{3}|{4}|",

                            AlignCenter(athlete[0].code.ToString(), 5),

                            AlignCenter(athlete[0].name, 30),

                            AlignCenter(athlete[0].gender, 5),

                            AlignCenter(athlete[0].nation_code, 5),

                            AlignCenter(athlete[0].athlete_event, 20))

              );

    }


    따라서, 사용하신 소스 및 환경에 문제가 있을 수 있으니 재확인 필요 하실 것 같습니다.


    2. ADO.Net 드라이버는 XA 지원하지 않습니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 115
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4474
3840 암호화 함수 MDB_ENC 질문입니다 1 BE-DEV 2023.04.17 82
3839 auto_increment 추가 방법 문의 1 부패방지운영팀 2023.04.14 265
3838 CUBRID 사용자 계정 생성 관련 문의 1 몽키스패너 2023.04.14 132
3837 order by 이후 rownum이 의도와 다르게 찍힙니다. 2 바보똥개 2023.04.14 145
3836 백업 및 복구 시 cubrid 버전 간 호환 문의 1 플레이어블 2023.04.13 71
3835 centos8에서 쉘스크립트 실행시 csql: command not found 오류 발생 6 kjn4345 2023.04.13 186
3834 큐브리드 timestamp 오류 문의 5 jjun7204 2023.04.12 154
3833 Cubrid DB 서버 swap memory 사용률 관련 질의 1 오라클민 2023.04.12 241
3832 Mac OS 큐브리드 매니저 실행이 안 됩니다. 2 아데산야라이트훅 2023.04.07 149
3831 blob select 1 네오랜덤 2023.04.05 141
3830 dba권한 상속 1 네오랜덤 2023.04.05 85
3829 mac os m1 실행시 무응답 실행안됩니다. 6 시나몬빵 2023.04.04 154
3828 함수/프로시져 구동시 필요한 java버젼 1 네오랜덤 2023.03.31 124
3827 큐브리드 설치 도중 취소한 후, 재설치가 불가능합니다. 5 복괴 2023.03.28 154
3826 where in () 서브쿼리 관련 문의입니다 1 제리리 2023.03.27 114
3825 한글을 입력받아 한글을 리턴하는 CUBRID JAVA StoredProcedure 작성시 window 환경에서 리턴 값이 깨져서 출력 됨 2 두목원슝 2023.03.22 167
3824 큐브리드 DAMO(암호화)관련 버전 호환관련하여 문의드립니다. 3 초코초코초 2023.03.20 230
3823 cubrid manager 에러?? 3 11시38분 2023.03.20 228
3822 PreparedStatement.executeBatch에서 일부 데이터의 오류 시 반환 값 문의 2 새옹지마 2023.03.18 344
3821 db생성경로가 db테이블과 결과조회에 영향을 미치나요? 1 dfdfdd 2023.03.15 122
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales