데이터 원본에 연결(ODBC)

응용 프로그램은 환경 및 연결 핸들을 할당하고 연결 특성을 설정한 후 데이터 원본이나 드라이버에 연결합니다. 연결에 사용할 수 있는 함수는 다음과 같이 세 가지가 있습니다.

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

사용할 수 있는 다양한 연결 문자열 옵션을 비롯하여 데이터 원본에 연결하는 자세한 방법은 SQL Server Native Client에서 연결 문자열 키워드 사용을 참조하십시오.

SQLConnect

SQLConnect는 가장 단순한 연결 함수입니다. 이 함수는 데이터 원본 이름, 사용자 ID 및 암호의 세 가지 매개 변수를 허용합니다. 데이터베이스 연결에 필요한 모든 정보가 이 세 매개 변수에 포함되는 경우 SQLConnect를 사용합니다. 이렇게 하려면 SQLDataSources를 사용하여 데이터 원본 목록을 만들고 데이터 원본, 사용자 ID 및 암호를 묻는 메시지를 사용자에게 표시한 다음 SQLConnect를 호출합니다.

SQLConnect는 데이터 원본 이름, 사용자 ID 및 암호만으로도 데이터 원본에 연결하는 데 충분하며 ODBC 드라이버가 해당 연결을 만드는 데 필요한 다른 모든 정보가 ODBC 데이터 원본에 포함되어 있다고 가정합니다. SQLDriverConnectSQLBrowseConnect와는 달리 SQLConnect는 연결 문자열을 사용하지 않습니다.

SQLDriverConnect

SQLDriverConnect는 데이터 원본 이름, 사용자 ID 및 암호 이외의 추가 정보가 필요한 경우 사용합니다. SQLDriverConnect에 대한 매개 변수 중 하나는 드라이버 관련 정보를 포함하는 연결 문자열입니다. 다음과 같은 경우 SQLConnect 대신 SQLDriverConnect를 사용할 수 있습니다.

  • 연결 시 드라이버 관련 정보를 지정하려는 경우

  • 드라이버가 연결 정보를 묻는 메시지를 사용자에게 표시하도록 하려는 경우

  • ODBC 데이터 원본을 사용하지 않고 연결하려는 경우

SQLDriverConnect 연결 문자열에는 ODBC 드라이버에서 지원하는 모든 연결 정보를 지정하는 일련의 키워드와 값 쌍이 포함됩니다. 각 드라이버는 드라이버에서 지원하는 모든 연결 정보에 대해 해당 드라이버의 키워드와 함께 표준 ODBC 키워드(DSN, FILEDSN, DRIVER, UID, PWD 및 SAVEFILE)를 지원합니다. SQLDriverConnect를 사용하면 데이터 원본을 사용하지 않고 연결할 수 있습니다. 예를 들어 SQL Server 인스턴스에 "DSN 없이" 연결하도록 디자인된 응용 프로그램의 경우 로그인 ID, 암호, 네트워크 라이브러리, 연결할 서버 이름 및 사용할 기본 데이터베이스를 정의하는 연결 문자열을 사용하여 SQLDriverConnect를 호출할 수 있습니다.

SQLDriverConnect를 사용할 경우 두 가지 옵션을 통해 필요한 연결 정보를 사용자에게 묻는 메시지를 표시할 수 있습니다.

  • 응용 프로그램 대화 상자

    연결 정보를 묻는 응용 프로그램 대화 상자를 만든 다음 NULL 창 핸들을 지정하고 DriverCompletion을 SQL_DRIVER_NOPROMPT로 설정하여 SQLDriverConnect를 호출합니다. 매개 변수를 이렇게 설정하면 ODBC 드라이버가 자체 대화 상자를 열지 않습니다. 이 방법은 응용 프로그램의 사용자 인터페이스를 제어해야 하는 경우 사용합니다.

  • 드라이버 대화 상자

    올바른 창 핸들을 SQLDriverConnect에 전달하고 DriverCompletion 매개 변수를 SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT 또는 SQL_DRIVER_COMPLETE_REQUIRED로 설정하도록 응용 프로그램을 코딩할 수 있습니다. 그러면 사용자에게 연결 정보를 묻는 대화 상자를 드라이버에서 생성합니다. 이 방법을 사용할 경우 응용 프로그램 코드가 단순해집니다.

SQLBrowseConnect

SQLBrowseConnectSQLDriverConnect와 마찬가지로 연결 문자열을 사용합니다. 그러나 SQLBrowseConnect를 사용할 경우 응용 프로그램에서 런타임에 데이터 원본을 사용하여 전체 연결 문자열을 반복해서 생성할 수 있습니다. 이를 통해 응용 프로그램에서는 다음 두 가지 작업이 가능해집니다.

  • 해당 정보를 묻는 고유의 대화 상자를 만듭니다. 따라서 해당 사용자 인터페이스에 대한 제어를 유지할 수 있습니다.

  • 특정 드라이버에서 사용할 수 있는 데이터 원본을 몇 개의 단계에 따라 시스템에서 찾습니다.

    예를 들어 사용자는 먼저 네트워크에서 서버를 찾아서 선택한 다음 이 서버에서 드라이버가 액세스할 수 있는 데이터베이스를 찾습니다.

SQLBrowseConnect가 성공적으로 연결을 수행하면 이후의 SQLDriverConnect 호출에서 사용할 수 있는 연결 문자열을 반환합니다.

SQL Server Native Client ODBC 드라이버는 SQLConnect, SQLDriverConnect 또는 SQLBrowseConnect가 성공적으로 완료된 경우 항상 SQL_SUCCESS_WITH_INFO를 반환합니다. ODBC 응용 프로그램이 QL_SUCCESS_WITH_INFO를 받은 후 SQLGetDiagRec을 호출하면 다음 메시지를 받을 수 있습니다.

  • 5701
    SQL Server에서 데이터 원본에 정의된 기본 데이터베이스 또는 데이터 원본에 기본 데이터베이스가 없는 경우 연결에 사용된 로그인 ID에 대해 정의된 기본 데이터베이스에 사용자의 컨텍스트를 가져옴을 나타냅니다.

  • 5703
    서버에서 사용 중인 언어를 나타냅니다.

다음 예에서는 시스템 관리자가 연결을 성공적으로 수행한 경우 반환되는 메시지를 보여 줍니다.

szSqlState = "01000", *pfNativeError = 5701,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
       Changed database context to 'pubs'."
szSqlState = "01000", *pfNativeError = 5703,
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]
       Changed language setting to 'us_english'."

메시지 5701 및 5703은 정보 메시지일 뿐이므로 무시해도 됩니다. 그러나 5701이나 5703 이외의 메시지가 반환될 수 있으므로 SQL_SUCCESS_WITH_INFO 반환 코드를 주의해서 검토해야 합니다. 예를 들어 드라이버가 오래된 카탈로그 저장 프로시저를 사용하여 SQL Server 인스턴스를 실행 중인 서버에 연결할 경우 SQL_SUCCESS_WITH_INFO를 받은 후 SQLGetDiagRec을 호출하면 오류가 반환됩니다. 다음은 이러한 오류 중 하나입니다.

SqlState:   01000
pfNative:   0
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC
            catalog stored procedures installed on server
            my65server are version 06.50.0193; version 07.00.0205
            or later is required to ensure proper operation.
            Please contact your system administrator."

이 경우 SQL Server 연결에 대한 응용 프로그램의 오류 처리 함수가 SQL_NO_DATA가 반환될 때까지 SQLGetDiagRec을 호출한 다음 pfNative 코드가 5701 또는 5703인 메시지를 제외한 다른 모든 메시지에 대해 적절한 동작을 수행해야 합니다.

참고 항목

개념

SQL Server와 통신(ODBC)