반응형

SQL서버에서 Oracle을 연결된 서버로 구성한 후 OpenQuery로 조회를 하면

메시지 9803, 수준 16, 상태 1, 줄 1
"numeric" 유형에 대한 데이터가 잘못되었습니다.


라는 오류가 발생 할 때가 있다.

원인은 Oracle 테이블에서 Type이 int 나 decimal인 컬럼을 사용하게 되면 발생 한다.

연결된 서버 구성시 공급자를 'Oracle Providier for OLE DB'로 지정 했을 때 이런 현상이 있다.

(공급자를 Microsoft OLE DB Provider for Oracle로 했을 때는 어떤 지는 모르겠다.

참고로 연결된 서버로 Oracle 을 추가한 후 공급자 속성에서 반드시 Inprocess허용을 해줘야 된다.)


오류를 해결 하기 위해서는 두가지 정도의 방법이 있는 것 같다.

첫번째는 OpenQuery 파라미터로 넘기는 쿼리에서 int 나 decimal 타입의 컬럼은 모두 to_number() 또는 to_char()로 형변환을

해서 SELECT를 하는 방법이고, 두번째는 컬럼 타입을 NUMBER 또는 FLOAT 로 변경 하는 방법이다.

단 첫번째 방법을 사용하면 SELECT 인 경우에는 문제가 없으나 해당 컬럼에 대하여 INSERT, UPDATE 할때

오류가 발생 한다.


연결된 서버 "hr"의 OLE DB 공급자 "OraOLEDB.Oracle"이(가) 메시지 "ROW-00008: Cannot update data in a read-only column"을(를) 반환했습니다.
메시지 7343, 수준 16, 상태 4, 줄 1
연결된 서버 "hr"의 OLE DB 공급자 "OraOLEDB.Oracle"이(가) 테이블 "[OraOLEDB.Oracle]"을(를) UPDATE할 수 없습니다.
반응형
반응형

대표적인 ERP 업체인 SAP이 사이베이스를 58억달러(주당 65달러)에 인수한다고 한다.

Oracle이 Sun을 인수하는 등 덩치 키우기에 주력하자 맞불 작전으로 DBMS 업체를 인수 한것으로 보인다.

Oracle은 Sun 인수를 통해서 MySQL을 덤(?)으로 가져 갔었는데, 일각에서는 경쟁 제품인 MySQL 죽이기로

보기도 했었다.

어쨋든 글로벌 소프트웨어 업체들이 계속된 M&A로 공룡들이 되어 가는 것 같다.

결국 몸집이 큰 육식공룡들의 전쟁터가 되는 것일까...
반응형

'IT정보' 카테고리의 다른 글

twitter 악성 코드 메일  (0) 2010.06.08
모질라 V8 지원  (0) 2010.05.28
iPhone 4G 또다시 유출  (0) 2010.05.14
옴니아2 아몰레드 개봉기  (0) 2010.04.21
유출된 아이폰 4G(?) 영상  (0) 2010.04.20

+ Recent posts