다음을 통해 공유


데이터 원본에 연결(ODBC)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

환경 및 연결 핸들을 할당하고 연결 특성을 설정한 후 애플리케이션은 데이터 원본 또는 드라이버에 연결합니다. 연결에 사용할 수 있는 함수는 다음과 같이 세 가지가 있습니다.

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

사용 가능한 다양한 연결 문자열 옵션을 포함하여 데이터 원본에 대한 연결을 만드는 방법에 대한 자세한 내용은 SQL Server Native Client에서 연결 문자열 키워드 사용을 참조하세요.

SQLConnect

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

SQLConnect 는 데이터 원본 이름, 사용자 ID 및 암호가 데이터 원본에 연결하기에 충분하고 ODBC 데이터 원본에 ODBC 드라이버가 연결하는 데 필요한 다른 모든 정보가 포함되어 있다고 가정합니다. SQLDriverConnect 및 SQLBrowseConnect달리 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

SQLDriverConnect와 같은 SQLBrowseConnect는 연결 문자열 사용합니다. 그러나 SQLBrowseConnect를 사용하여 애플리케이션은 런타임에 데이터 원본을 사용하여 전체 연결 문자열 반복적으로 생성할 수 있습니다. 이렇게 하면 애플리케이션에서 다음 두 가지 작업을 수행할 수 있습니다.

  • 자체 대화 상자를 빌드하여 이 정보를 묻는 메시지를 표시하여 사용자 인터페이스에 대한 제어권을 유지합니다.

  • 시스템에서 특정 드라이버에서 사용할 수 있는 데이터 원본을 여러 단계로 찾아봅니다.

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

SQLBrowseConnect가 성공적인 연결을 완료하면 SQLDriverConnect에 대한 후속 호출에 사용할 수 있는 연결 문자열 반환합니다.

SQL Server Native Client ODBC 드라이버는 성공적인 SQLConnect, SQLDriverConnect 또는 SQLBrowseConnect에서 항상 SQL_SUCCESS_WITH_INFO 반환합니다. SQL_SUCCESS_WITH_INFO 받은 후 ODBC 애플리케이션이 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)