Соединение с источником данных (ODBC)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform 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 можно использовать для подключения без источника данных. Например, приложение, предназначенное для подключения к экземпляру 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.