DB-Library에서 ODBC 대량 복사로 변환

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

SQL Server Native Client ODBC 드라이버에서 지원하는 대량 복사 함수는 다음 예외를 제외하고 DB-Library 대량 복사 함수와 유사하므로 DB-Library 대량 복사 프로그램을 ODBC로 쉽게 변환할 수 있습니다.

  • DB-Library 애플리케이션은 대량 복사 함수의 첫 번째 매개 변수로 DBPROCESS 구조체에 대한 포인터를 전달합니다. ODBC 애플리케이션에서 DBPROCESS 포인터는 ODBC 연결 핸들로 바뀝니다.

  • DB 라이브러리 애플리케이션은 연결하기 전에 BCP_SETL 호출하여 DBPROCESS에서 대량 복사 작업을 사용하도록 설정합니다. ODBC 애플리케이션은 연결 핸들에서 대량 작업을 사용하도록 설정하기 위해 연결하기 전에 SQLSetConnectAttr를 대신 호출합니다.

    SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP,  
        (void *)SQL_BCP_ON, SQL_IS_INTEGER);  
    
  • SQL Server Native Client ODBC 드라이버는 DB-Library 메시지 및 오류 처리기를 지원하지 않습니다. ODBC 대량 복사 함수에서 발생하는 오류 및 메시지를 가져오려면 SQLGetDiagRec를 호출해야 합니다. 대량 복사 함수의 ODBC 버전은 ODBC 스타일 반환 코드(예: SQL_SUCCESS 또는 SQL_ERROR)가 아닌 SUCCEED 또는 FAILED의 표준 대량 복사 반환 코드를 반환합니다.

  • DB-Library bcp_bindvarlen 매개 변수에 지정된 값은 ODBC bcp_bindcbData 매개 변수와 다르게 해석됩니다.

    나타내는 조건 DB-Library varlen ODBC cbData
    Null 값 제공 0 -1(SQL_NULL_DATA)
    제공된 변수 데이터 -1 -10(SQL_VARLEN_DATA)
    길이가 0인 문자 또는 이진 문자열 해당 없음 0

    DB-Library 에서 varlen 값 -1은 가변 길이 데이터가 제공되고 있음을 나타내며, 이는 ODBC cbData 에서 NULL 값만 제공되고 있음을 의미하는 것으로 해석됩니다. -1의 DB-Library varlen 사양을 SQL_VARLEN_DATA 모든 varlen 사양을 0에서 SQL_NULL_DATA 변경합니다.

  • DB-Library bcp_colfmt file_collen 및 ODBC bcp_colfmtcbUserData는 위에서 언급한 bcp_bindvarlen 및 cbData 매개 변수와 동일한 문제가 있습니다. -1의 DB-Library file_collen 사양을 SQL_VARLEN_DATA 변경하고 0의 file_collen 사양을 SQL_NULL_DATA.

  • ODBC bcp_control 함수의 iValue 매개 변수는 void 포인터입니다. DB-Library 에서 iValue 는 정수였습니다. ODBC iValue 의 값을 void *로 캐스팅합니다.

  • bcp_control 옵션 BCPMAXERRS는 대량 복사 작업이 실패하기 전에 오류가 발생할 수 있는 개별 행 수를 지정합니다. BCPMAXERRS의 기본값은 DB 라이브러리 버전의 bcp_control 0(첫 번째 오류 발생 시 실패)이고 ODBC 버전에서는 10입니다. 대량 복사 작업을 종료하기 위해 기본값인 0에 의존하는 DB-Library 애플리케이션은 BCPMAXERRS를 0으로 설정하기 위해 ODBC bcp_control 호출하도록 변경해야 합니다.

  • ODBC bcp_control 함수는 DB-Library 버전의 bcp_control 지원되지 않는 다음 옵션을 지원합니다.

    • BCPODBC

      TRUE로 설정하면 문자 형식으로 저장된 datetimesmalldatetime 값에 ODBC 타임스탬프 이스케이프 시퀀스 접두사 및 접미사가 있도록 지정합니다. 이는 BCP_OUT 작업에만 적용됩니다.

      BCPODBC를 FALSE 로 설정하면 문자열로 변환된 날짜/시간 값이 다음과 같이 출력됩니다.

      1997-01-01 00:00:00.000  
      

      BCPODBC를 TRUE로 설정하면 동일한 날짜/시간 값이 다음과 같이 출력됩니다.

      {ts '1997-01-01 00:00:00.000' }  
      
    • BCPKEEPIDENTITY

      TRUE로 설정하면 대량 복사 함수가 ID 제약 조건이 있는 열에 제공된 데이터 값을 삽입하도록 지정합니다. 설정되지 않은 경우 삽입된 행에 대해 새 ID 값이 생성됩니다.

    • BCPHINTS

      다양한 대량 복사 최적화를 지정합니다. 이 옵션은 6.5 이전 버전의 SQL Server에서 사용할 수 없습니다.

    • BCPFILECP

      대량 복사 파일의 코드 페이지를 지정합니다.

    • BCPUNICODEFILE

      문자 모드 대량 복사 파일이 유니코드 파일임을 지정합니다.

  • ODBC bcp_colfmt 함수는 ODBC SQLCHAR typedef와 충돌하기 때문에 SQLCHAR의 file_type 표시기를 지원하지 않습니다. bcp_colfmt 대신 SQLCHARACTER를 사용합니다.

  • 대량 복사 함수의 ODBC 버전에서 문자열에서 datetimesmalldatetime 값을 사용하는 형식은 yyyy-mm-dd hh:mm:ss.sss 의 ODBC 형식입니다.smalldatetime 값은 yyyy-mm-dd hh:mm:ss의 ODBC 형식을 사용합니다.

    대량 복사 함수의 DB-Library 버전은 여러 형식을 사용하여 문자열의 datetimesmalldatetime 값을 허용합니다.

    • 기본 형식은 mmm dd yyyy hh:mmxx입니다. 여기서 xx는 AM 또는 PM입니다.

    • DB-Library dbconvert 함수에서 지원하는 모든 형식의 datetimesmalldatetime 문자열입니다.

    • SQL Server 클라이언트 네트워크 유틸리티의 DB-라이브러리 옵션 탭에서 국가별 설정 사용 상자를 선택하면 DB-Library 대량 복사 함수도 클라이언트 컴퓨터 레지스트리의 로캘 설정에 대해 정의된 지역별 날짜 형식으로 날짜를 허용합니다.

    DB-Library 대량 복사 함수는 ODBC datetimesmalldatetime 형식을 허용하지 않습니다.

    SQL_SOPT_SS_REGIONALIZE 문 특성이 SQL_RE_ON 설정되면 ODBC 대량 복사 함수는 클라이언트 컴퓨터 레지스트리의 로캘 설정에 대해 정의된 지역별 날짜 형식으로 날짜를 허용합니다.

  • 문자 형식으로 money 값을 출력할 때 ODBC 대량 복사 함수는 4자리 정밀도와 쉼표 구분 기호를 제공하지 않습니다. DB-Library 버전은 두 자릿수의 정밀도만 제공하고 쉼표 구분 기호를 포함합니다.

참고 항목

대량 복사 작업 수행(ODBC)
대량 복사 함수