핸들 할당 및 SQL Server에 연결(ODBC)

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

핸들을 할당하고 SQL Server에 연결하려면

  1. ODBC 헤더 파일 Sql.h, Sqlext.h, Sqltypes.h을 포함합니다.

  2. SQL Server 드라이버별 헤더 파일 Odbcss.h를 포함합니다.

  3. SQL_HANDLE_ENV HandleType을 사용하여 SQLAllocHandle을 호출하여 ODBC를 초기화하고 환경 핸들을 할당합니다.

  4. 특성이 SQL_ATTR_ODBC_VERSION 설정되고 ValuePtr이 SQL_OV_ODBC3 설정된 SQLSetEnvAttr을 호출하여 애플리케이션이 ODBC 3.x 형식 함수 호출을 사용함을 나타냅니다.

  5. 필요에 따라 SQLSetEnvAttr 을 호출하여 다른 환경 옵션을 설정하거나 SQLGetEnvAttr 을 호출하여 환경 옵션을 가져옵니다.

  6. SQL_HANDLE_DBC HandleType을 사용하여 SQLAllocHandle을 호출하여 연결 핸들을 할당합니다.

  7. 필요에 따라 SQLSetConnectAttr 를 호출하여 연결 옵션을 설정하거나 SQLGetConnectAttr 를 호출하여 연결 옵션을 가져옵니다.

  8. SQLConnect를 호출하여 기존 데이터 원본을 사용하여 SQL Server 연결합니다.

    또는

    연결 문자열을 사용하여 SQL Server 연결하려면 SQLDriverConnect를 호출합니다.

    최소 전체 SQL Server 연결 문자열에는 다음 두 가지 형식 중 하나가 있습니다.

    DSN=dsn_name;Trusted_connection=yes;  
    DRIVER={SQL Server Native Client 10.0};SERVER=server;Trusted_connection=yes;  
    

    연결 문자열이 완료되지 않은 경우 SQLDriverConnect 에서 필요한 정보를 묻는 메시지를 표시할 수 있습니다. 이는 DriverCompletion 매개 변수에 지정된 값에 의해 제어됩니다.

    -또는-

    SQLBrowseConnect를 반복적인 방식으로 여러 번 호출하여 연결 문자열을 빌드하고 SQL Server 연결합니다.

  9. 필요에 따라 SQLGetInfo를 호출하여 SQL Server 데이터 원본에 대한 드라이버 특성 및 동작을 가져옵니다.

  10. 문을 할당하고 사용합니다.

  11. SQLDisconnect를 호출하여 SQL Server 연결을 끊고 새 연결에 연결 핸들을 사용할 수 있도록 합니다.

  12. SQL_HANDLE_DBC HandleType을 사용하여 SQLFreeHandle을 호출하여 연결 핸들을 해제합니다.

  13. SQL_HANDLE_ENV HandleType을 사용하여 SQLFreeHandle을 호출하여 환경 핸들을 해제합니다.

중요

가능하면 Windows 인증을 사용하세요. Windows 인증을 사용할 수 없으면 런타임에 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다. 자격 증명은 파일에 저장하지 않는 것이 좋습니다. 자격 증명을 유지하려면 Win32 crypto API를 사용하여 자격 증명을 암호화해야 합니다.

예제

이 예제에서는 SQLDriverConnect를 호출하여 기존 ODBC 데이터 원본을 요구하지 않고 SQL Server 인스턴스에 연결하는 방법을 보여줍니다. 불완전한 연결 문자열을 SQLDriverConnect에 전달하면 ODBC 드라이버가 사용자에게 누락된 정보를 입력하라는 메시지를 표시합니다.

#define MAXBUFLEN   255  
  
SQLHENV      henv = SQL_NULL_HENV;  
SQLHDBC      hdbc1 = SQL_NULL_HDBC;  
SQLHSTMT      hstmt1 = SQL_NULL_HSTMT;  
  
SQLCHAR      ConnStrIn[MAXBUFLEN] =  
         "DRIVER={SQL Server Native Client 10.0};SERVER=MyServer";  
  
SQLCHAR      ConnStrOut[MAXBUFLEN];  
SQLSMALLINT   cbConnStrOut = 0;  
  
// Make connection without data source. Ask that driver   
// prompt if insufficient information. Driver returns  
// SQL_ERROR and application prompts user  
// for missing information. Window handle not needed for  
// SQL_DRIVER_NOPROMPT.  
retcode = SQLDriverConnect(hdbc1,      // Connection handle  
                  NULL,         // Window handle  
                  ConnStrIn,      // Input connect string  
                  SQL_NTS,         // Null-terminated string  
                  ConnStrOut,      // Address of output buffer  
                  MAXBUFLEN,      // Size of output buffer  
                  &cbConnStrOut,   // Address of output length  
                  SQL_DRIVER_PROMPT);