Выделение дескрипторов и соединение с SQL Server (ODBC)

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics AnalyticsPlatform System (PDW)

Выделение дескрипторов и соединение с SQL Server

  1. Включите файлы заголовка ODBC Sql.h, Sqlext.h, Sqltypes.h.

  2. Включите файл заголовка SQL Server драйвера Odbcss.h.

  3. Вызовите SQLAllocHandle с типом handleType SQL_HANDLE_ENV, чтобы инициализировать ODBC и выделить дескриптор среды.

  4. Вызовите SQLSetEnvAttrс атрибутом SQL_ATTR_ODBC_VERSION и значением ValuePtr SQL_OV_ODBC3, чтобы указать, что приложение будет использовать вызовы функций в формате ODBC 3.x.

  5. При необходимости вызовите SQLSetEnvAttr , чтобы задать другие параметры среды, или вызовите SQLGetEnvAttr , чтобы получить параметры среды.

  6. Вызовите SQLAllocHandle с типом handleType SQL_HANDLE_DBC, чтобы выделить дескриптор подключения.

  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. Вызовите SQLFreeHandle с типом handleType SQL_HANDLE_DBC, чтобы освободить дескриптор подключения.

  13. Вызовите SQLFreeHandle с типом handleType SQL_HANDLE_ENV, чтобы освободить дескриптор среды.

Важно!

По возможности используйте аутентификацию Windows. Если проверка подлинности Windows недоступна, запросите у пользователя ввод учетных данных во время выполнения. Избегайте хранения учетных данных в файле. Если необходимо сохранить учетные данные, зашифруйте их с помощью API-интерфейса шифрования Win32.

Пример

В этом примере показан вызов SQLDriverConnect для подключения к экземпляру SQL Server без использования существующего источника данных ODBC. Передача неполной строки подключения в 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);