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

적용 대상: 예SQL Server(지원되는 모든 버전) 예Azure SQL Database 예Azure SQL Managed Instance 예Azure Synapse Analytics 예병렬 데이터 웨어하우스

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

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

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

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

  4. SQL_ATTR_ODBC_VERSION 로 설정 된 특성 을 사용 하 여 SQLSetEnvAttr를 호출 하 고, 로 SQL_OV_ODBC3 설정 하 여 응용 프로그램에서 ODBC 3. x 형식의 함수 호출을 사용 하도록 지정 합니다.

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

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

  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. HandleType of SQL_HANDLE_DBC로 sqlfreehandle 을 호출 하 여 연결 핸들을 해제 합니다.

  13. HandleType of SQL_HANDLE_ENV로 sqlfreehandle 을 호출 하 여 환경 핸들을 해제 합니다.

중요

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

예제

이 예에서는 SQL Server 기존 ODBC 데이터 원본을 요구 하지 않고 인스턴스에 연결 하기 위해 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);