다음을 통해 공유


ODBC 커서 라이브러리

일부 ODBC 드라이버는 기본 커서 설정만 지원합니다. 또한 이러한 드라이버는 SQLSetPos와 같은 위치 지정 커서 작업을 지원하지 않습니다. ODBC 커서 라이브러리는 일반적으로 블록 또는 정적 커서를 지원하지 않는 드라이버에서 블록 또는 정적 커서를 구현하는 데 사용되는 MDAC(Microsoft Data Access Components) 구성 요소입니다. 또한 커서 라이브러리는 만드는 커서에 대해 위치 지정 UPDATE 및 DELETE 문과 SQLSetPos를 구현합니다.

ODBC 커서 라이브러리는 ODBC 드라이버 관리자와 ODBC 드라이버 사이의 계층으로 구현됩니다. ODBC 커서 라이브러리가 로드되면 ODBC 드라이버 관리자에서 모든 커서 관련 명령을 드라이버 대신 커서 라이브러리로 라우팅합니다. 커서 라이브러리는 기본 드라이버에서 전체 결과 집합을 인출하고 결과 집합을 클라이언트에 캐시하여 커서를 구현합니다. ODBC 커서 라이브러리를 사용하는 경우 응용 프로그램은 커서 라이브러리의 커서 기능으로 제한됩니다. 기본 드라이버의 추가 커서 기능에 대한 지원은 응용 프로그램에서 사용할 수 없습니다.

드라이버 자체에서 ODBC 커서 라이브러리보다 많은 커서 기능을 지원하므로 SQL Server Native Client ODBC 드라이버에서 ODBC 커서 라이브러리를 사용할 필요는 없습니다. SQL Server Native Client ODBC 드라이버에서 ODBC 커서 라이브러리를 사용하는 유일한 이유는 드라이버가 서버 커서를 통해 커서 지원을 구현하고 서버 커서에서 모든 SQL 문을 지원하지 않기 때문입니다. 저장 프로시저, 일괄 처리 또는 COMPUTE, COMPUTE BY, FOR BROWSE 또는 INTO가 포함된 SQL 문에 정적 커서가 필요한 경우 ODBC 커서 라이브러리를 사용합니다. 하지만 커서 라이브러리는 전체 결과 집합을 클라이언트에 캐시하여 많은 메모리가 사용되고 성능이 저하될 수 있으므로 주의해야 합니다.

응용 프로그램은 데이터 원본에 연결하기 전에 SQLSetConnectAttr를 사용하여 SQL_ATTR_ODBC_CURSORS 연결 특성을 설정함으로써 연결 단위로 커서 라이브러리를 호출합니다. SQL_ATTR_ODBC_CURSORS는 다음 세 값 중 하나로 설정됩니다.

  • SQL_CUR_USE_ODBC
    SQL Server Native Client ODBC 드라이버를 사용하여 이 옵션을 설정하면 ODBC 커서 라이브러리가 SQL Server Native Client ODBC 드라이버의 기본 커서 지원을 무시합니다. 커서 라이브러리에서 지원되는 커서 유형만 연결에 사용할 수 있으며 서버 커서는 사용할 수 없습니다.

  • SQL_CUR_USE_DRIVER
    이 옵션을 설정하면 SQL Server Native Client ODBC 드라이버에서 기본 제공되는 모든 커서 지원을 연결에 사용할 수 있습니다. ODBC 커서 라이브러리는 사용할 수 없습니다. 모든 커서가 서버 커서로 구현됩니다.

  • SQL_CUR_USE_IF_NEEDED
    이 옵션을 설정하면 SQL Server Native Client ODBC 드라이버에서 사용할 경우 SQL_CUR_USE_DRIVER와 같은 효과를 냅니다. 연결 시 ODBC 드라이버 관리자에서 ODBC 드라이버가 연결되어 SQLFetchScroll의 SQL_FETCH_PRIOR 옵션을 지원하는지 여부를 테스트합니다. 드라이버가 이 옵션을 지원하지 않으면 ODBC 드라이버 관리자에서 ODBC 커서 라이브러리를 로드합니다. 드라이버가 이 옵션을 지원하면 ODBC 드라이버 관리자에서 ODBC 커서 라이브러리를 로드하지 않으며 응용 프로그램이 드라이버의 기본 지원을 사용합니다. SQL Server Native Client ODBC 드라이버에서 SQL_FETCH_PRIOR를 지원하므로 ODBC 드라이버 관리자는 ODBC 커서 라이브러리를 로드하지 않습니다.

커서 라이브러리를 사용하면 응용 프로그램이 스크롤 및 업데이트 가능한 커서는 물론 한 연결에서 활성 문을 여러 개 사용할 수 있습니다. 이 기능을 지원하려면 커서 라이브러리를 로드해야 합니다. SQLSetConnectAttr을 사용하여 커서 라이브러리 사용 방법을 지정하고 SQLSetStmtAttr을 사용하여 커서 유형, 동시성 및 행 집합 크기를 지정합니다.