다음을 통해 공유


3.5 드라이버를 3.8 드라이버로 업그레이드

이 항목에서는 ODBC 3.5 드라이버를 ODBC 3.8 드라이버로 업그레이드하기 위한 지침과 고려 사항을 제공합니다.

버전 번호

다음 지침은 버전 번호와 관련이 있습니다.

  • 드라이버는 SQL_OV_ODBC2, SQL_OV_ODBC3 및 SQL_OV_ODBC3_80 이외의 값에 대한 SQL_ERROR 반환하여 SQL_ATTR_ODBC_VERSION SQL_OV_ODBC3_80 지원해야 합니다. 드라이버 관리자의 이후 버전에서는 드라이버가 SQLSetEnvAttr 함수에서 SQL_SUCCESS 반환하는 경우 드라이버가 ODBC 준수 수준을 지원한다고 가정합니다.

  • SQL_DRIVER_ODBC_VER InfoType에 전달되면 버전 3.8 드라이버는 SQLGetInfo에서 03.80을 반환해야 합니다. 그러나 이전 버전의 Microsoft Windows에 포함된 이전 드라이버 관리자는 드라이버를 버전 3.5 드라이버로 처리하고 경고를 실행합니다.

    Windows 7에서 드라이버 관리자 버전은 03.80입니다. Windows 8에서 드라이버 관리자 버전은 SQLGetInfo SQL_DM_VER(InfoType 매개 변수)를 통해 03.81입니다. SQL_ODBC_VER Windows 7 및 Windows 8 모두에서 버전을 03.80으로 보고합니다.

드라이버별 C 데이터 형식

드라이버는 버전 3.8 ODBC 애플리케이션에서 작동하는 경우 사용자 지정된 C 데이터 형식을 가질 수 있습니다. (자세한 내용은 를 참조하세요 .ODBC의 C 데이터 형식입니다.) 그러나 3.8 드라이버가 드라이버별 C 형식을 구현할 필요는 없습니다. 그러나 드라이버는 여전히 C 형식의 범위 검사를 수행해야 합니다. 드라이버 관리자는 3.8 드라이버에 대해 그렇게 하지 않습니다. 드라이버 개발을 용이하게 하기 위해 드라이버별 C 데이터 형식의 값을 다음 형식으로 정의할 수 있습니다.

SQL_DRIVER_C_TYPE_BASE+0, SQL_DRIVER_C_TYPE_BASE+1  
드라이버별 데이터 형식, 설명자 형식, 정보 유형, 진단 형식 및 특성

새 드라이버를 개발할 때는 데이터 형식, 설명자 형식, 정보 유형, 진단 형식 및 특성에 대해 드라이버별 범위를 사용해야 합니다. 드라이버별 범위 및 해당 기본 형식 값은 드라이버별 데이터 형식, 설명자 형식, 정보 형식, 진단 형식 및 특성에서 설명합니다.

연결 풀링

연결 풀링을 보다 효율적으로 관리하기 위해 ODBC 3.8에서는 SQLSetConnectAttr에서 SQL_ATTR_RESET_CONNECTION 연결 특성을 도입했습니다. SQL_RESET_CONNECTION_YES 이 특성에 유효한 유일한 값입니다. 드라이버 관리자가 연결 풀에 연결을 배치하기 직전에 SQL_ATTR_RESET_CONNECTION 설정되므로 드라이버가 다른 연결 특성을 기본값으로 다시 설정할 수 있습니다.

서버와의 불필요한 통신을 방지하기 위해 드라이버는 풀에서 연결을 다시 사용한 후 원격 서버와의 다음 통신까지 연결 특성 재설정을 연기할 수 있습니다.

SQL_ATTR_RESET_CONNECTION 드라이버 관리자와 드라이버 간의 통신에만 사용됩니다. 애플리케이션에서 이 특성을 직접 설정할 수 없습니다. 모든 버전 3.8 드라이버는 이 연결 특성을 구현해야 합니다.

스트리밍된 출력 매개 변수

ODBC 버전 3.8에는 출력 매개 변수를 검색하는 확장성이 뛰어난 스트리밍 출력 매개 변수가 도입되었습니다. (자세한 내용은 를 참조하세요.SQLGetData를 사용하여 출력 매개 변수 검색 이 기능을 지원하려면 SQL_GETDATA_EXTENSIONS SQLGetInfo 호출의 InfoType경우 드라이버는 반환 값에 SQL_GD_OUTPUT_PARAMS 설정해야 합니다. 스트리밍된 출력 매개 변수가 있는 SQL 형식에 대한 지원은 드라이버에서 구현되어야 합니다. 드라이버 관리자는 잘못된 SQL 형식에 대한 오류를 생성하지 않습니다. 스트리밍된 출력 매개 변수를 지원하는 SQL 형식은 드라이버에 정의됩니다.

애플리케이션이 SQLGetData를 사용하여 SQLParamData에서 반환한 매개 변수와 같지 않은 매개 변수를 검색하는 경우 드라이버는 SQL_ERROR 반환해야 합니다.

연결 작업에 대한 비동기 실행(폴링 메서드)

드라이버는 다양한 연결 작업에 대해 비동기 지원을 사용하도록 설정할 수 있습니다.

Windows 7부터 ODBC는 폴링 방법을 지원합니다(자세한 내용은 비동기 실행(폴링 방법) 참조 ). 버전 3.8 ODBC 드라이버가 연결 핸들에 대한 비동기 작업을 구현할 필요가 없습니다. 드라이버가 연결 핸들에서 비동기 작업을 구현하지 않더라도 드라이버는 여전히 SQL_ASYNC_DBC_FUNCTIONS InfoType을 구현하고 SQL_ASYNC_DBC_NOT_CAPABLE 반환해야 합니다.

비동기 연결 작업을 사용하는 경우 연결 작업의 실행 시간은 반복되는 모든 호출의 총 시간입니다. 총 시간이 SQL_ATTR_CONNECTION_TIMEOUT 연결 특성에 의해 설정된 값을 초과하고 작업이 완료되지 않은 후 마지막으로 반복된 호출이 발생하면 드라이버는 SQL_ERROR 반환하고 SQLState HYT01과 "연결 시간 제한 만료"라는 메시지를 사용하여 진단 레코드를 기록합니다. 작업이 완료되면 시간 제한이 없습니다.

SQLCancelHandle 함수

ODBC 3.8은 연결 및 문 작업을 모두 취소하는 데 사용되는 SQLCancelHandle 함수를 지원합니다. SQLCancelHandle지원하는 드라이버는 함수를 내보내야 합니다. 애플리케이션이 문 핸들에서 SQLCancel 또는 SQLCancelHandle을 호출하는 경우 드라이버가 진행 중인 동기 또는 비동기 연결 함수를 취소해서는 안 됩니다. 마찬가지로, 애플리케이션이 연결 핸들에서 SQLCancelHandle을 호출하는 경우 드라이버가 진행 중인 동기 또는 비동기 문 함수를 취소해서는 안 됩니다. 또한 애플리케이션이 연결 핸들에서 SQLCancelHandle을 호출하는 경우 드라이버는 검색 작업을 취소해서는 안 됩니다(SQLBrowseConnect는 SQL_NEED_DATA 반환). 이러한 경우 드라이버는 HY010 , "함수 시퀀스 오류"를 반환해야 합니다.

SQLCancelHandle 및 비동기 연결 작업을 동시에 지원할 필요는 없습니다. 드라이버는 비동기 연결 작업을 지원할 수 있지만 SQLCancelHandle은 지원하지 않거나 그 반대의 경우도 마찬가지입니다.

일시 중단된 연결

ODBC 3.8 드라이버 관리자는 연결을 일시 중단된 상태로 전환할 수 있습니다. 애플리케이션은 SQLDisconnect를 호출하여 연결과 연결된 리소스를 해제합니다. 이 경우 드라이버는 연결 상태를 확인하지 않고 최대한 많은 리소스를 해제해야 합니다. 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요.

드라이버 인식 연결 풀링

Windows 8의 ODBC를 사용하면 드라이버가 연결 풀 동작을 사용자 지정할 수 있습니다. 자세한 내용은 드라이버 인식 연결 풀링을 참조 하세요.

비동기 실행(알림 메서드)

ODBC 3.8은 Windows 8부터 사용할 수 있는 비동기 작업에 대한 알림 방법을 지원합니다. 자세한 내용은 비동기 실행(알림 방법)을 참조하세요.

참고 항목

ODBC 드라이버 개발
Microsoft에서 제공하는 ODBC 드라이버
ODBC 3.8의 새로운 기능