Создание драйвера ODBC для собственного клиента SQL Server
В архитектуре ODBC имеется четыре компонента, которые выполняют следующие функции.
Компонент |
Функция |
---|---|
Приложение |
Вызывает функции ODBC для связи с источником данных ODBC, поставляет инструкции SQL и обрабатывает результирующие наборы. |
Диспетчер драйверов |
Управляет связью между приложением и всеми драйверами ODBC, используемыми приложением. |
Драйвер |
Обрабатывает вызовы всех функций ODBC из приложения, передает инструкции SQL из приложения в источник данных и возвращает результаты приложению. При необходимости драйвер переводит ODBC SQL из приложения в собственный SQL, используемый источником данных. |
Источник данных |
Содержит все необходимые драйверу сведения для доступа к конкретному экземпляру данных в СУБД. |
Приложение, использующее драйвер ODBC для собственного клиента SQL Server для связи с экземпляром SQL Server, выполняет следующие задачи:
соединяется с источником данных;
отправляет инструкции SQL в источник данных;
обрабатывает результаты инструкций из источника данных;
обрабатывает сообщения об ошибках;
Закрывает соединение с источником данных.
Более сложное приложение, написанное для драйвера ODBC для собственного клиента SQL Server, может также выполнять следующие задачи:
использовать курсоры для управления расположением в результирующем наборе;
запрашивать операции фиксации или отката для управления транзакциями;
выполнять распределенные транзакции между двумя или несколькими серверами;
запускать хранимые процедуры на удаленном сервере;
вызывать функции каталога для запроса сведений об атрибутах результирующего набора;
выполнять операции массового копирования;
управлять операциями, связанными с большими объемами данных (столбцы varchar(max), nvarchar(max) и varbinary(max));
использовать логику повторного соединения для облегчения отработки отказа при настроенном зеркальном отображении базы данных;
записывать в журнал данные о производительности и о долго выполняемых запросах.
Для использования функций ODBC приложение на языке C или C++ должно включать файлы заголовка sql.h, sqlext.h и sqltypes.h. Для использования функций API-интерфейса установщика ODBC, приложение должно включать файл заголовка odbcinst.h. Приложение, использующее ODBC и Юникод, должно включать файл заголовка sqlucode.h. Приложения ODBC должны быть связаны с файлом odbc32.lib. Приложения ODBC, вызывающие функции API-интерфейса установщика ODBC, должны быть связаны с файлом odbccp32.lib. Эти файлы включены в пакет SDK платформы Windows.
Многие драйверы ODBC, в том числе драйвер ODBC для собственного клиента SQL Server, предоставляют расширения ODBC, связанные с конкретным драйвером. Чтобы воспользоваться расширениями драйвера ODBC для собственного клиента SQL Server, приложение должно включать файл заголовка sqlncli.h. Этот файл заголовка содержит следующее:
атрибуты соединения, относящиеся к драйверу ODBC для собственного клиента SQL Server;
атрибуты инструкций, относящиеся к драйверу ODBC для собственного клиента SQL Server;
атрибуты столбцов, относящиеся к драйверу ODBC для собственного клиента SQL Server;
типы данных, относящиеся к SQL Server;
определяемые пользователем типы данных, относящиеся к SQL Server;
типы SQLGetInfo, относящиеся к драйверу ODBC для собственного клиента SQL Server;
диагностические поля драйвера ODBC для собственного клиента SQL Server;
диагностические коды динамических функций, относящиеся к SQL Server;
определения типов C и C++ для собственных типов данных C, зависящие от SQL Server (возвращаются, если столбцы привязаны к типу данных C SQL_C_BINARY);
определение типа для структуры данных SQLPERF;
макросы и прототипы массового копирования для поддержки API-интерфейса массового копирования через соединение ODBC;
вызов функций API-интерфейса метаданных распределенного запроса для списков связанных серверов и их каталогов.
Любое приложение ODBC на языке C или C++, использующее функцию массового копирования драйвера ODBC SQL Server Native Client, должно компоноваться с файлом sqlncli11.lib. Приложения, вызывающие функции API-интерфейса метаданных распределенного запроса, также должны компоноваться с файлом sqlncli11.lib. Файлы sqlncli.h и sqlncli11.lib поставляются в составе инструментария разработчика SQL Server. Каталоги SQL Server Include и Lib должны находиться в пути компилятора INCLUDE и LIB, как показано ниже:
LIB=c:\Program Files\Microsoft Data Access SDK 2.8\Libs\x86\lib;C:\Program Files\Microsoft SQL Server\100\Tools\SDK\Lib;
INCLUDE=c:\Program Files\Microsoft Data Access SDK 2.8\inc;C:\Program Files\Microsoft SQL Server\100\Tools\SDK\Include;
На раннем этапе разработки приложения необходимо решить, будет ли приложение нуждаться в нескольких одновременных вызовах ODBC. Существует два метода поддержки нескольких одновременных вызовов ODBC. Они описаны в оставшихся разделах этой темы. Дополнительные сведения см. в справочнике по программированию ODBC.