Соединение с источником данных (ODBC)

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

После определения среды и дескрипторов соединения, а также установки любых атрибутов соединения приложение устанавливает соединение с источником данных или драйвером. Существует три функции, которые можно использовать для установки соединения:

  • SQLConnect

  • SQLDriverConnect

  • SQLBrowseConnect

Дополнительные сведения о подключении к источнику данных, включая различные доступные параметры строки подключения, см. в разделе "Использование ключевых слов строки подключения" с собственным клиентом SQL Server.

SQLConnect

SQLConnect — это простейшая функция подключения. Она принимает три параметра: имя источника данных, идентификатор пользователя и пароль. Используйте SQLConnect , если эти три параметра содержат все сведения, необходимые для подключения к базе данных. Для этого создайте список источников данных с помощью SQLDataSources; запросите пользователю источник данных, идентификатор пользователя и пароль, а затем вызовите SQLConnect.

SQLConnect предполагает, что имя источника данных, идентификатор пользователя и пароль достаточно для подключения к источнику данных и что источник данных ODBC содержит все остальные сведения, необходимые драйверу ODBC для подключения. В отличие от SQLDriverConnect и SQLBrowseConnect, SQLConnect не использует строку подключения.

SQLDriverConnect

SQLDriverConnect используется, если требуется больше сведений, чем имя источника данных, идентификатор пользователя и пароль. Одним из параметров SQLDriverConnect является строка подключения, содержащая сведения о драйвере. Вы можете использовать SQLDriverConnect вместо SQLConnect по следующим причинам:

  • для указания специфической для драйвера информации во время подключения;

  • для запроса, который драйвер направляет пользователю для получения информации о соединении;

  • для соединения без использования источника данных ODBC.

Строка подключения SQLDriverConnect содержит ряд пар "ключевое слово-значение", которые указывают все сведения о подключении, поддерживаемые драйвером ODBC. Каждый драйвер поддерживает стандартные ключевые слова ODBC (DSN, FILEDSN, DRIVER, UID, PWD и SAVEFILE) в дополнение к специальным ключевым словам драйвера для указания всей информации о соединении, поддерживаемой драйвером. SQLDriverConnect можно использовать для подключения без источника данных. Например, приложение, которое предназначено для подключения dsN-less к экземпляру SQL Server, может вызывать SQLDriverConnect со строкой подключения, которая определяет идентификатор входа, пароль, сетевую библиотеку, имя сервера для подключения и базу данных по умолчанию.

При использовании SQLDriverConnect существует два варианта запроса пользователя для получения необходимых сведений о подключении:

  • Диалоговое окно приложения

    Вы можете создать диалоговое окно приложения, которое запрашивает сведения о подключении, а затем вызывает SQLDriverConnect с дескриптором окна NULL и набором DriverCompletion для SQL_DRIVER_NOPROMPT. Эти параметры предотвращают открытие драйвером ODBC собственного диалогового окна. Этот метод используется, когда важно управлять пользовательским интерфейсом приложения.

  • Диалоговое окно драйвера

    Вы можете закодировать приложение, чтобы передать допустимый дескриптор окна в SQLDriverConnect и задать для параметра DriverCompletion значение SQL_DRIVER_COMPLETE, SQL_DRIVER_PROMPT или SQL_DRIVER_COMPLETE_REQUIRED. Затем драйвер формирует диалоговое окно для получения от пользователя информации о соединении. Этот метод упрощает код приложения.

SQLBrowseConnect

SQLBrowseConnect, например SQLDriverConnect, использует строку подключения. Однако с помощью SQLBrowseConnect приложение может создавать полную строку подключения итеративно с источником данных во время выполнения. Это позволяет приложению:

  • строить собственные диалоговые окна для запроса этой информации, сохраняя таким образом управление своим пользовательским интерфейсом;

  • просматривать систему в поисках источников данных, которые может использовать конкретный драйвер, возможно, за несколько шагов.

    Например, пользователь может сначала просмотреть серверы в сети, а после выбора сервера с помощью драйвера просмотреть доступные базы данных этого сервера.

Когда SQLBrowseConnect завершает успешное подключение, он возвращает строку подключения, которую можно использовать при последующих вызовах SQLDriverConnect.

Драйвер ODBC собственного клиента SQL Server всегда возвращает SQL_SUCCESS_WITH_INFO в успешном sqlConnect, SQLDriverConnect или SQLBrowseConnect. Когда приложение ODBC вызывает SQLGetDiagRec после получения SQL_SUCCESS_WITH_INFO, оно может получать следующие сообщения:

5701
Указывает, что SQL Server помещает контекст пользователя в базу данных по умолчанию, определенную в источнике данных, или в базу данных по умолчанию, определенную для идентификатора входа, используемого в соединении, если источник данных не имеет базы данных по умолчанию.

5703
Обозначает язык, используемый на сервере.

В следующих примерах показано сообщение, которое возвращается системным администратором при успешном соединении:

szSqlState = "01000", *pfNativeError = 5701,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed database context to 'pubs'."  
szSqlState = "01000", *pfNativeError = 5703,  
szErrorMsg="[Microsoft][SQL Server Native Client][SQL Server]  
       Changed language setting to 'us_english'."  

Можно не обрабатывать сообщения 5701 и 5703; они всего лишь информационные. Однако не следует пропускать код возврата SQL_SUCCESS_WITH_INFO, так как сообщения, отличные от 5701 и 5703, могут быть возвращены. Например, если драйвер подключается к серверу под управлением экземпляра SQL Server с устаревшими хранимыми процедурами каталога, одна из ошибок, возвращаемых через SQLGetDiagRec после SQL_SUCCESS_WITH_INFO:

SqlState:   01000  
pfNative:   0  
szErrorMsg: "[Microsoft][SQL Server Native Client]The ODBC  
            catalog stored procedures installed on server  
            my65server are version 06.50.0193; version 07.00.0205  
            or later is required to ensure proper operation.  
            Please contact your system administrator."  

Функция обработки ошибок приложения для подключений SQL Server должна вызывать SQLGetDiagRec , пока она не возвращает SQL_NO_DATA. Затем он должен действовать на любых сообщениях, отличных от тех, с кодом pfNative 5701 или 5703.

См. также

Взаимодействие с SQL Server (ODBC)