Background Image

FORUM

2020.10.29 14:50

MSSQL DBLink INSERT

조회 수 1411 추천 수 0 댓글 5
?

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Docker CentOS7 64bit 
CUBRID Ver.
CUBRID 10.2 (10.2.2.8874-f681dd9) (64bit release build for Linux) (Sep  1 2020 09:41:17)
CUBRID TOOL Ver.
CUBRID Admin 10.2.0.0002 (64bit)
응용 환경(API)
ssms

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


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


안녕하세요. 


https://www.cubrid.com/qna/3804477 의 글을보면서

mssql 에서 dblink로 cubrid를 연결하려고 에러가납니다.


OLEDB와 ODBC는 설치하고 


select 까지는 되는데 insert문이 안됨니다.

다른 설정을 해야하는 것이 있는지 궁굼합니다.


cubrid error.png




  • ?
    오명환 2020.10.29 16:34
    CUBRID의 table schema와 mssql에서 사용한 insert 구문을 올려주세요.
    에러 메세지로는 특정 필드의 값 구조가 다른 것처럼 보입니다.
  • ?
    흥노 2020.10.29 18:15

    --테스트에 사용한 쿼리입니다.
    DROP TABLE [IF_EPIS_CROPS_CODE]

    CREATE TABLE [IF_EPIS_CROPS_CODE]
    (
    [CROP_CD] VARCHAR(10),
    [USE_KND] VARCHAR(80),
    [CROP_NM_KOR] VARCHAR(1000) ,
    [CROP_NM_ENG] VARCHAR(1000) ,
    [TECH_NM] VARCHAR(1000) ,
    [UPOV_CD] VARCHAR(20) ,
    [TRN_ID] VARCHAR(50) ,
    [MSG_ID] VARCHAR(50) ,
    [TRN_STATS] VARCHAR(2) ,
    [TRN_DT] DATETIME ,
    [TRN_MSG] VARCHAR(2000) ,
    --, CONSTRAINT PK_IF_EPIS_CROPS_CODE PRIMARY KEY([CROP_CD])
    )

    INSERT INTO if_epis_crops_code ( crop_cd,use_knd,crop_nm_kor,crop_nm_eng,tech_nm,upov_cd,trn_id,msg_id,trn_stats,trn_dt,trn_msg )
    VALUES ( '2', '','' ,'' ,'' ,'' ,'' ,'' , '', sys_datetime, '' )


    --- mssql 구문 입니다.
    select * from lnk_test...if_epis_crops_code


    INSERT INTO lnk_test...if_epis_crops_code ( crop_cd,use_knd,crop_nm_kor,crop_nm_eng,tech_nm,upov_cd,trn_id,msg_id,trn_stats,trn_dt,trn_msg )
    VALUES ( '', '','' ,'' ,'' ,'' ,'' ,'' , '', null, '' )


    빠른답변 부탁드려요

    감사합니다.

  • ?
    권호일 2020.11.02 15:02
    내부 확인 결과 입력하는 값에 NULL이 있는 경우에 오류가 발생합니다.

    우회 방법으로는는 NVL함수를 사용하여 NULL값이 입력되지 않도록 하는 방법이 있습니다.

    해당 오류사항은 내부 오류로 등록하여 차기버젼에 수정하도록 하겠습니다.

    감사합니다.
  • ?
    흥노 2020.11.02 17:52
    확인 감사드립니다.

    NULL값을 안넣으니깐 입력되는건 확인했습니다.

    그런데 테이블에 기본키를 설정하면 다른에러가 발생합니다. 키값을 설정하면

    SELECT, INSERT 둘다 작동하지 않습니다.

    메시지 7356, 수준 16, 상태 1, 줄 9
    연결된 서버 "lnk_test"의 OLE DB 공급자 "MSDASQL"이(가) 열에 대해 일관성이 없는 메타데이터를 제공했습니다. 개체 "if_epis_crops_code"의 열 "crop_cd"(컴파일 시 서수 1)이(가) 컴파일 중에는 "DBCOLUMNFLAGS_ISNULLABLE"/0이(가) 있고 런타임 중에는 32이(가) 있는 것으로 보고되었습니다.
  • ?
    민순 2020.11.05 14:38

    OPENQUERY를 사용해 보시기 바랍니다.

    SELECT * FROM OPENQUERY( [ linked_server 이름], '[실행할 쿼리]' );

    SELECT * FROM OPENQUERY (lnk_test, 'select * from if_epis_crops_code');

    INSERT 구문에서 NULL 값을 넣을 컬럼 빼고 실행해 주시면 정상적으로 실행이 되고 NULL 값이 INSERT 되는 것 확인했습니다.

    INSERT INTO OPENQUERY(lnk_test, 'select crop_cd, use_knd, crop_nm_kor, crop_nm_eng, tech_nm, upov_cd, trn_id, msg_id, trn_stats, trn_msg from if_epis_crops_code') VALUES ( '', '','' ,'' ,'' ,'' ,'' ,'' , '', '' );


    보내주신 테스트 코드 모두 실행 정상적으로 되는 것 확인했습니다.


    --테스트에 사용한 쿼리입니다.
    DROP TABLE [IF_EPIS_CROPS_CODE]

    CREATE TABLE [IF_EPIS_CROPS_CODE]
    (
    [CROP_CD] VARCHAR(10),
    [USE_KND] VARCHAR(80),
    [CROP_NM_KOR] VARCHAR(1000) ,
    [CROP_NM_ENG] VARCHAR(1000) ,
    [TECH_NM] VARCHAR(1000) ,
    [UPOV_CD] VARCHAR(20) ,
    [TRN_ID] VARCHAR(50) ,
    [MSG_ID] VARCHAR(50) ,
    [TRN_STATS] VARCHAR(2) ,
    [TRN_DT] DATETIME ,
    [TRN_MSG] VARCHAR(2000) ,
    --, CONSTRAINT PK_IF_EPIS_CROPS_CODE PRIMARY KEY([CROP_CD])
    )

    INSERT INTO if_epis_crops_code ( crop_cd,use_knd,crop_nm_kor,crop_nm_eng,tech_nm,upov_cd,trn_id,msg_id,trn_stats,trn_dt,trn_msg )
    VALUES ( '2', '','' ,'' ,'' ,'' ,'' ,'' , '', sys_datetime, '' )


    --mssql 에서 실행한 쿼리



    INSERT INTO OPENQUERY(lnk_test, 'select crop_cd, use_knd, crop_nm_kor, crop_nm_eng, tech_nm, upov_cd, trn_id, msg_id, trn_stats, trn_msg from if_epis_crops_code') VALUES ( '', '','' ,'' ,'' ,'' ,'' ,'' , '', '' );

    SELECT * FROM OPENQUERY (lnk_test, 'select * from if_epis_crops_code');





    또한, KEY 값이 있는 테이블도 정상적으로 조회가 됩니다.



    OPENQUERY 관련해서는 아래 링크 참고해주시기 바랍니다.

    https://docs.microsoft.com/ko-kr/sql/t-sql/functions/openquery-transact-sql?view=sql-server-ver15

    감사합니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 123
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
3902 큐브리드 2008 R1.3 버전 설치 질문 3 김우람 2009.02.25 13608
3901 select하여, 일부만 변수값으로 넣으려고 합니다... 1 안지민 2009.02.26 13531
3900 java proc 1 벅지 2009.02.26 16999
3899 VARCHAR 타입에 관한 질문. 2 김우람 2009.02.26 26251
3898 procedure 내 내부 커넥션 4 벅지 2009.02.27 24430
3897 큐브리드 잠금정보 관련 질문 드립니다. 5 kkckc 2009.02.27 14497
3896 리눅스에서 큐브리드 설치시 문제입니다 2 file 유니콘 2009.02.27 13563
3895 서브쿼리에서 두개 이상의 데이터를 참조하려면. 2 안지민 2009.03.03 22320
3894 오라클에서 큐브리드로 마이그레이션 방법이 있나요? 1 삽질쟁이 2009.03.03 16004
3893 FreeBSD port 지원 가능한가요? 1 자유연애 2009.03.03 14525
3892 자동증가 필드 질문합니다 1 유니콘 2009.03.04 16024
3891 Java Heap Space 에러가 납니다 2 file 유니콘 2009.03.04 18183
3890 rownum은 order by에 영향을 안 받네요 2 안지민 2009.03.04 20485
3889 manager server에 이상이 생긴 거 같습니다. 4 Devin 2009.03.05 11390
3888 자바 함수 생성후 결과값 확인을 어떻게 하는지?? 3 이석희 2009.03.05 18754
3887 에러 코드 조회 3 kkckc 2009.03.05 11839
3886 아무리 생각해도 이건 버그 같습니다. 3 안지민 2009.03.06 11498
3885 왜 컬럼이름이 안붙나요...... 1 file 안지민 2009.03.06 12075
3884 테이블 파티셔닝은 1 홍서기 2009.03.07 15037
3883 DB 로그인시 에러 1 file 이석희 2009.03.12 11748
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 201 Next
/ 201

Contact Cubrid

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