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

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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에 연결합니다.

    또는

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

    전체 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을 호출하여 환경 핸들을 해제합니다.

Important

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

예제

이 예제에서는 기존 ODBC 데이터 원본을 요구하지 않고 SQL Server 인스턴스에 연결하기 위해 SQLDriverConnect를 호출하는 방법을 보여 줍니다. 불완전한 연결 문자열 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);