Выделение дескрипторов и соединение с SQL Server (ODBC)Allocate Handles and Connect to SQL Server (ODBC)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

Выделение дескрипторов и соединение с SQL ServerTo allocate handles and connect to SQL Server

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

  2. Включите зависящий от драйвера SQL ServerSQL Server файл заголовка Odbcss.h.Include the SQL ServerSQL Server driver-specific header file, Odbcss.h.

  3. Вызовите функцию SQLAllocHandle с параметром handletype SQL_HANDLE_ENV, чтобы инициализировать ODBC и выделить обработчик среды.Call SQLAllocHandle with a HandleType of SQL_HANDLE_ENV to initialize ODBC and allocate an environment handle.

  4. Вызовите SQLSetEnvAttr с атрибутом , имеющим значение SQL_ATTR_ODBC_VERSION, а ValuePtr — значение SQL_OV_ODBC3, чтобы указать, что приложение будет использовать вызовы функций формата ODBC 3. x.Call SQLSetEnvAttr with Attribute set to SQL_ATTR_ODBC_VERSION and ValuePtr set to SQL_OV_ODBC3 to indicate the application will use ODBC 3.x-format function calls.

  5. При необходимости вызовите SQLSetEnvAttr , чтобы задать другие параметры среды, или вызовите SQLGetEnvAttr , чтобы получить параметры среды.Optionally, call SQLSetEnvAttr to set other environment options, or call SQLGetEnvAttr to get environment options.

  6. Вызовите функцию SQLAllocHandle с параметром handletype SQL_HANDLE_DBC, чтобы выделить маркер подключения.Call SQLAllocHandle with a HandleType of SQL_HANDLE_DBC to allocate a connection handle.

  7. При необходимости вызовите SQLSetConnectAttr , чтобы задать параметры соединения, или вызовите SQLGetConnectAttr , чтобы получить параметры соединения.Optionally, call SQLSetConnectAttr to set connection options, or call SQLGetConnectAttr to get connection options.

  8. Вызовите SQLConnect, чтобы использовать существующий источник данных для подключения к SQL ServerSQL Server .Call SQLConnect to use an existing data source to connect to SQL ServerSQL Server.

    либоOr

    Вызовите SQLDriverConnect , чтобы использовать строку подключения для подключения к SQL ServerSQL Server .Call SQLDriverConnect to use a connection string to connect to SQL ServerSQL Server.

    Минимальная строка соединения SQL ServerSQL Server имеет одну из двух форм:A minimum complete SQL ServerSQL Server connection string has one of two forms:

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

    Если строка подключения не завершена, SQLDriverConnect может запросить необходимые сведения.If the connection string is not complete, SQLDriverConnect can prompt for the required information. Это определяется значением, указанным для параметра DriverCompletion .This is controlled by the value specified for the DriverCompletion parameter.

    - или -- or -

    Вызывайте SQLBrowseConnect несколько раз в итеративном виде для создания строки подключения и подключения к SQL ServerSQL Server .Call SQLBrowseConnect multiple times in an iterative fashion to build the connection string and connect to SQL ServerSQL Server.

  9. При необходимости вызовите SQLGetInfo , чтобы получить атрибуты и поведение драйвера для SQL ServerSQL Server источника данных.Optionally, call SQLGetInfo to get driver attributes and behavior for the SQL ServerSQL Server data source.

  10. Выделите и используйте инструкции.Allocate and use statements.

  11. Вызовите SQLDisconnect, чтобы отключиться от SQL ServerSQL Server и сделать маркер соединения доступным для нового соединения.Call SQLDisconnect to disconnect from SQL ServerSQL Server and make the connection handle available for a new connection.

  12. Вызовите SQLFreeHandle с параметром handletype SQL_HANDLE_DBC, чтобы освободить маркер подключения.Call SQLFreeHandle with a HandleType of SQL_HANDLE_DBC to free the connection handle.

  13. Вызовите SQLFreeHandle с параметром handletype SQL_HANDLE_ENV, чтобы освободить обработчик среды.Call SQLFreeHandle with a HandleType of SQL_HANDLE_ENV to free the environment handle.

Важно!

По возможности используйте аутентификацию Windows.When possible, use Windows Authentication. Если проверка подлинности Windows недоступна, запросите у пользователя ввод учетных данных во время выполнения.If Windows Authentication is not available, prompt users to enter their credentials at run time. Избегайте хранения учетных данных в файле.Avoid storing credentials in a file. Если необходимо сохранить учетные данные, зашифруйте их с помощью API-интерфейса шифрования Win32.If you must persist credentials, you should encrypt them with the Win32 crypto API.

ПримерExample

В этом примере показан вызов SQLDriverConnect для подключения к экземпляру, SQL ServerSQL Server не требуя наличия существующего источника данных ODBC.This example shows a call to SQLDriverConnect to connect to an instance of SQL ServerSQL Server without requiring an existing ODBC data source. Передавая неполную строку подключения в SQLDriverConnect, драйвер ODBC запрашивает у пользователя ввод недостающих данных.By passing an incomplete connection string to SQLDriverConnect, it causes the ODBC driver to prompt the user to enter the missing information.

#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);