Поделиться через


Обзор поставщика OLE DB для SQL Server

Поставщик Microsoft OLE DB для SQL Server, SQLOLEDB, позволяет ADO получать доступ к Microsoft SQL Server.

Важный

SQL Server Native Client, часто сокращаемый до SNAC, был изъят из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Переходите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server в будущем.

Параметры строки подключения

Чтобы подключиться к этому поставщику, задайте для аргумента поставщика значение свойства ConnectionString:

SQLOLEDB

Это значение также можно задать или прочитать с помощью свойства поставщика.

Типичная строка подключения

Типичная строка подключения для этого поставщика:

"Provider=SQLOLEDB;Data Source=serverName;"
Initial Catalog=databaseName;
User ID=MyUserID;Password=<password>;"

Строка состоит из следующих ключевых слов:

Ключевое слово Описание
Поставщик Указывает поставщика OLE DB для SQL Server.
источник данных или сервер Указывает имя сервера.
начальный каталог или база данных Указывает имя базы данных на сервере.
идентификатор пользователя или uid Указывает имя пользователя (для проверки подлинности SQL Server).
пароль или pwd Указывает пароль пользователя (для проверки подлинности SQL Server).

Заметка

Если вы подключаетесь к поставщику источников данных, поддерживающему проверку подлинности Windows, следует указать Trusted_Connection=Да или Интегрированная безопасность = SSPI вместо идентификатора пользователя и пароля в строке подключения.

параметры подключения Provider-Specific

Поставщик поддерживает несколько параметров подключения для конкретного поставщика в дополнение к параметрам, определенным ADO. Как и свойства подключения ADO, эти свойства для конкретного поставщика можно задать с помощью коллекции свойств свойствподключения или можно задать как часть ConnectionString.

Параметр Описание
Доверенное_Соединение Указывает режим проверки подлинности пользователя. Для этого можно задать значение Да или Нет. Значение по умолчанию — No. Если для этого свойства задано значение Да, SQLOLEDB использует режим проверки подлинности Microsoft Windows NT для авторизации доступа пользователей к базе данных SQL Server, указанной значениями свойств расположения и источника данных. Если для этого свойства задано значение No, SQLOLEDB использует смешанный режим для авторизации доступа пользователей к базе данных SQL Server. Свойства Идентификатор пользователя и Пароль используются для указания имени входа и пароля SQL Server.
Текущий язык Указывает имя языка SQL Server. Определяет язык, используемый для выбора системного сообщения и форматирования. Язык должен быть установлен на SQL Server, в противном случае открытие подключения завершится ошибкой.
Сетевой адрес Указывает сетевой адрес SQL Server, указанный свойством Location.
Сетевая библиотека Указывает имя сетевой библиотеки (DLL), используемой для взаимодействия с SQL Server. Имя не должно включать путь или расширение имени файла .dll. Значение по умолчанию предоставляется конфигурацией клиента SQL Server.
Использование процедуры подготовки Определяет, создает ли SQL Server временные хранимые процедуры при подготовке команд (свойством Prepared).
Автоматический перевод Указывает, преобразуются ли символы OEM/ANSI. Это свойство можно задать для True или False. Значение по умолчанию — True. Если для этого свойства задано значение True, SQLOLEDB выполняет преобразование символов OEM/ANSI при извлечении строк с несколькими байтами или отправке в SQL Server. Если для этого свойства задано значение false false, SQLOLEDB не выполняет преобразование символов OEM/ANSI для данных строк с несколькими байтами.
Размер пакета Указывает размер сетевого пакета в байтах. Значение свойства размера пакета должно быть от 512 до 32767. Размер сетевого пакета SQLOLEDB по умолчанию — 4096.
Имя приложения Указывает имя клиентского приложения.
Идентификатор рабочей станции Строка, определяющая рабочую станцию.

Использование объекта command

SQLOLEDB принимает смесь ODBC, ANSI и Transact-SQL, специфичные для SQL Server, как допустимый синтаксис. Например, следующая инструкция SQL использует эскейп-последовательность ODBC SQL для указания строковой функции LCASE.

SELECT customerid={fn LCASE(CustomerID)} FROM Customers

LCASE возвращает символьную строку, преобразуя все прописные символы в эквиваленты нижнего регистра. Строка ANSI SQL LOWER выполняет ту же операцию, поэтому следующая инструкция SQL эквивалентна инструкции ANSI, представленной ранее:

SELECT customerid=LOWER(CustomerID) FROM Customers

SQLOLEDB успешно обрабатывает одну из двух форм инструкции при указании её в виде текста для команды.

Хранимые процедуры

При выполнении хранимой процедуры SQL Server с помощью команды SQLOLEDB используйте escape-последовательность вызова процедуры ODBC в тексте команды. Затем SQLOLEDB использует механизм вызова удаленной процедуры SQL Server для оптимизации обработки команд. Например, следующая инструкция ODBC SQL является предпочтительным текстом команды по сравнению с формой Transact-SQL.

ODBC SQL

{call SalesByCategory('Produce', '1995')}

Transact-SQL

EXECUTE SalesByCategory 'Produce', '1995'

Компоненты SQL Server

С помощью SQL Server ADO может использовать XML для ввода команды и получать результаты в формате ПОТОКА XML вместо объектов наборе записей. Дополнительные сведения см. в статье Использование потоков для ввода команд и получения наборов результатов в потоки.

Доступ к данным sql_variant с помощью MDAC 2.7, MDAC 2.8 или Windows DAC 6.0

Microsoft SQL Server имеет тип данных с именем sql_variant. Аналогично DBTYPE_VARIANTOLE DB, тип данных sql_variant может хранить данные нескольких различных типов. Однако существует несколько ключевых различий между DBTYPE_VARIANT и sql_variant. ADO также обрабатывает данные типа sql_variant по-другому, чем другие типы данных. В следующем списке описываются проблемы, которые следует учитывать при доступе к данным SQL Server, хранящимся в столбцах типа sql_variant.

  • В MDAC 2.7, MDAC 2.8 и компонентах доступа к данным Windows (Windows DAC) 6.0 поставщик OLE DB для SQL Server поддерживает тип sql_variant. Поставщик OLE DB для ODBC не поддерживается.

  • Тип sql_variant точно не соответствует типу данных DBTYPE_VARIANT. Тип sql_variant поддерживает несколько новых подтипов, которые не поддерживаются DBTYPE_VARIANT, включая GUID, строки ANSI (не Unicode) и BIGINT. Использование подтипов, отличных от перечисленных выше, будет работать правильно.

  • Подтип sql_variantNUMERIC не совпадает по размеру с DBTYPE_DECIMAL.

  • Приведение нескольких типов данных приведет к тому, что типы не совпадают. Например, принудительное преобразование sql_variant с подтипом GUID в DBTYPE_VARIANT приведет к подтипу safearray(байт). Преобразование этого типа обратно в sql_variant приведет к новому подтипу массива (байт).

  • поля набора записей, содержащие данные типа sql_variant, могут быть удалены (маршалированы) или сохранены только в том случае, если sql_variant содержит определенные подтипы. При попытке удаленного доступа к данным или их сохранения со следующими неподдерживаемыми подтипами возникнет ошибка во время выполнения (неподдерживаемое преобразование) из поставщика сохраняемости (MSPersist): VT_VARIANT, VT_RECORD, VT_ILLEGAL, VT_UNKNOWN, VT_BSTRи VT_DISPATCH.

  • Поставщик OLE DB для SQL Server в MDAC 2.7, MDAC 2.8 и Windows DAC 6.0 имеет динамическое свойство, называемое Allow Native Variants который, как подразумевает имя, позволяет разработчикам получать доступ к sql_variant в собственной форме в отличие от DBTYPE_VARIANT. Если это свойство задано, а набора записей открывается с помощью обработчика курсоров клиента (adUseClient), вызов Recordset.Open завершится ошибкой. Если это свойство задано, а набора записей открыт с помощью курсоров сервера (adUseServer), вызов Recordset.Open будет выполнен успешно, но доступ к столбцам типа sql_variant приведет к ошибке.

  • В клиентских приложениях, использующих MDAC 2.5, sql_variant данные можно использовать с запросами к Microsoft SQL Server. Однако значения данных sql_variant рассматриваются как строки. Такие клиентские приложения следует обновить до MDAC 2.7, MDAC 2.8 или Windows DAC 6.0.

Поведение набора записей

SQLOLEDB не может использовать курсоры SQL Server для поддержки нескольких результатов, созданных многими командами. Если потребитель запрашивает набор записей, требующий поддержки курсора SQL Server, ошибка возникает, если используемый текст команды создает более одного набора записей в результате.

Прокручиваемые наборы записей SQLOLEDB поддерживаются курсорами SQL Server. SQL Server накладывает ограничения на курсоры, которые чувствительны к изменениям, внесенным другими пользователями базы данных. В частности, строки в некоторых курсорах не могут быть упорядочены, и попытка создать набор записей с помощью команды, содержащей предложение SQL ORDER BY, может завершиться ошибкой.

Динамические свойства

Поставщик Microsoft OLE DB для SQL Server вставляет несколько динамических свойств в коллекцию свойств неоткрытых объектов Подключение, Recordsetи Команда.

Следующие таблицы представляют собой перекрестный индекс имен ADO и OLE DB для каждого динамического свойства. Справочник программиста OLE DB ссылается на имя свойства ADO по термину "Описание". Дополнительные сведения об этих свойствах см. в справочнике программиста OLE DB. Найдите имя свойства OLE DB в индексе или см. Приложение C: свойства OLE DB.

Динамические свойства подключения

Следующие свойства добавляются в коллекцию свойств объекта Connection.

Имя свойства ADO Имя свойства OLE DB
Активные сеансы DBPROP_ACTIVESESSIONS
Асинхронное прерывание DBPROP_ASYNCTXNABORT
Асинхронное фиксирование DBPROP_ASYNCTNXCOMMIT
Уровни изоляции автокоммита DBPROP_SESS_AUTOCOMMITISOLEVELS
Расположение каталога DBPROP_CATALOGLOCATION
Термин каталога DBPROP_CATALOGTERM
Определение столбца DBPROP_COLUMNDEFINITION
Время ожидания подключения DBPROP_INIT_TIMEOUT
Текущий каталог DBPROP_CURRENTCATALOG
Источник данных DBPROP_INIT_DATASOURCE
Имя источника данных DBPROP_DATASOURCENAME
Модель потоков объектов источника данных DBPROP_DSOTHREADMODEL
Имя СУБД DBPROP_DBMSNAME
Версия СУБД DBPROP_DBMSVER
Расширенные свойства DBPROP_INIT_PROVIDERSTRING
Поддержка GROUP BY DBPROP_GROUPBY
Поддержка разнородных таблиц DBPROP_HETEROGENEOUSTABLES
Чувствительность к регистру идентификатора DBPROP_IDENTIFIERCASE
Исходный каталог DBPROP_INIT_CATALOG
Уровни изоляции DBPROP_SUPPORTEDTXNISOLEVELS
Сохранение изоляции DBPROP_SUPPORTEDTXNISORETAIN
Идентификатор локали DBPROP_INIT_LCID
Максимальный размер индекса DBPROP_MAXINDEXSIZE
Максимальный размер строки DBPROP_MAXROWSIZE
Максимальный размер строки учитывает BLOB-объект DBPROP_MAXROWSIZEINCLUDESBLOB
Максимальные таблицы в SELECT DBPROP_MAXTABLESINSELECT
Несколько наборов параметров DBPROP_MULTIPLEPARAMSETS
Несколько результатов DBPROP_MULTIPLERESULTS
Несколько объектов хранилища DBPROP_MULTIPLESTORAGEOBJECTS
Обновление нескольких таблиц DBPROP_MULTITABLEUPDATE
Порядок сортировки NULL DBPROP_NULLCOLLATION
Поведение объединения NULL DBPROP_CONCATNULLBEHAVIOR
Версия OLE DB DBPROP_PROVIDEROLEDBVER
Поддержка объектов OLE DBPROP_OLEOBJECTS
Поддержка открытого набора строк DBPROP_OPENROWSETSUPPORT
ORDER BY столбцы в списке SELECT DBPROP_ORDERBYCOLUMNSINSELECT
Доступность выходного параметра DBPROP_OUTPUTPARAMETERAVAILABILITY (доступность выходного параметра)
Аксессоры передачи по ссылке DBPROP_BYREFACCESSORS
Пароль DBPROP_AUTH_PASSWORD
Сохранение сведений о безопасности DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
Тип постоянного идентификатора DBPROP_PERSISTENTIDTYPE
Подготовка сценария прерывания DBPROP_PREPAREABORTBEHAVIOR
Подготовка поведения коммитов DBPROP_PREPARECOMMITBEHAVIOR
Термин процедуры DBPROP_PROCEDURETERM
Побуждение DBPROP_INIT_PROMPT
Дружественное имя поставщика DBPROP_PROVIDERFRIENDLYNAME
Имя поставщика DBPROP_PROVIDERFILENAME
Версия поставщика DBPROP_PROVIDERVER
источник данных Read-Only DBPROP_ИсточникТолькоДляЧтения
Преобразования наборов строк по команде DBPROP_ROWSETCONVERSIONSONCOMMAND
Термин схемы DBPROP_SCHEMATERM
Использование схемы DBPROP_SCHEMAUSAGE
Поддержка SQL DBPROP_SQLSUPPORT
Структурированное хранилище DBPROP_STRUCTUREDSTORAGE
Поддержка вложенных запросов DBPROP_SUBQUERIES
Термин таблицы DBPROP_TABLETERM
Операции DDL DBPROP_SUPPORTEDTXNDDL
Идентификатор пользователя DBPROP_AUTH_USERID
Имя пользователя DBPROP_USERNAME
Дескриптор окна DBPROP_INIT_HWND

Динамические свойства набора записей

Следующие свойства добавляются в коллекцию свойств свойств объекта набора записей.

Имя свойства ADO Имя свойства OLE DB
Порядок доступа DBPROP_ACCESSORDER
Блокировка объектов хранилища DBPROP_BLOCKINGSTORAGEOBJECTS
Тип закладки DBPROP_BOOKMARKTYPE
Может быть добавлено в закладки DBPROP_IROWSETLOCATE
Изменение вставленных строк DBPROP_CHANGEINSERTEDROWS
Привилегии колонок DBPROP_COLUMNRESTRICT
Уведомление набора столбцов DBPROP_NOTIFYCOLUMNSET
Тайм-аут команды DBPROP_COMMANDTIMEOUT
Отложить столбец DBPROP_DEFERRED
Задержка обновлений объектов хранилища DBPROP_DELAYSTORAGEOBJECTS
Обратный поиск DBPROP_CANFETCHBACKWARDS
Удержание строк Свойство DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
Неподвижные строки DBPROP_IMMOBILEROWS
IRowset DBPROP_IRowset
IRowsetChange DBPROP_IRowsetChange
IRowsetIdentity DBPROP_IRowsetIdentity
IRowsetInfo DBPROP_IRowsetInfo
IRowsetLocate DBPROP_IRowsestLocate
IRowsetResynch
IRowsetScroll DBPROP_IRowsetScroll
IRowsetUpdate DBPROP_IRowsetUpdate
ISequentialStream DBPROP_ISequentialStream
ISupportErrorInfo DBPROP_ISupportErrorInfo
Литеральные закладки DBPROP_LITERALBOOKMARKS
Идентификация строк по литералам DBPROP_LITERALIDENTITY
Максимальное количество открытых строк DBPROP_MAXOPENROWS
Максимальное число строк в ожидании DBPROP_MAXPENDINGROWS
Максимальные строки DBPROP_MAXROWS
Степень детализации уведомлений DBPROP_NOTIFICATIONGRANULARITY
Этапы уведомлений DBPROP_NOTIFICATIONPHASES
Объекты, трансактированные DBPROP_TRANSACTEDOBJECT
Видны изменения других DBPROP_OTHERUPDATEDELETE
Другие вставки видимы DBPROP_OTHERINSERT
Видны собственные изменения DBPROP_OWNUPDATEDELETE
Собственные вставки видимы DBPROP_OWNINSERT
Сохранение при прерывании DBPROP_ABORTPRESERVE
Сохранить при коммите DBPROP_COMMITPRESERVE
Быстрая перезагрузка DBPROP_QUICKRESTART
Рентрируемые события DBPROP_REENTRANTEVENTS
Удаление удаленных строк DBPROP_REMOVEDELETED
Отчет о нескольких изменениях DBPROP_REPORTMULTIPLECHANGES
Вставки, находящиеся в ожидании возврата DBPROP_RETURNPENDINGINSERTS
Уведомление об удалении строк DBPROP_NOTIFYROWDELETE
Уведомление о первом изменении строки DBPROP_NOTIFYROWFIRSTCHANGE
Уведомление о вставке строк DBPROP_NOTIFYROWINSERT
Привилегии на строки в базе данных DBPROP_ROWRESTRICT
Уведомление о повторной синхронизации строк DBPROP_NOTIFYROWRESYNCH
Модель потоков строк DBPROP_ROWTHREADMODEL
Уведомление об отмене изменений в строке DBPROP_NOTIFYROWUNDOCHANGE
Уведомление об отмене удаления строки DBPROP_NOTIFYROWUNDODELETE
Уведомление об отмене вставки строки DBPROP_NOTIFYROWUNDOINSERT
Уведомление об обновлении строк DBPROP_NOTIFYROWUPDATE
Уведомление об изменении положения набора строк DBPROP_NOTIFYROWSETFETCHPOSISIONCHANGE
Уведомление о выпуске Rowset DBPROP_NOTIFYROWSETRELEASE
Прокрутка назад DBPROP_CANSCROLLBACKWARDS
Курсор сервера DBPROP_SERVERCURSOR
Пропуск удаленных закладок DBPROP_BOOKMARKSKIPPED
Надежная идентификация строки DBPROP_STRONGITDENTITY
Уникальные строки DBPROP_UNIQUEROWS
Обновляемость DBPROP_UPDATABILITY
Использование закладок DBPROP_BOOKMARKS

Динамические свойства команд

Следующие свойства добавляются в коллекцию Properties объекта Command.

Имя свойства ADO Имя свойства OLE DB
Порядок доступа DBPROP_ACCESSORDER
Базовый путь SSPROP_STREAM_BASEPATH
Блокировка объектов хранилища DBPROP_BLOCKINGSTORAGEOBJECTS
Тип закладки Тип закладки (DBPROP_BOOKMARKTYPE)
Может быть добавлено в закладки DBPROP_IROWSETLOCATE
Изменение вставленных строк DBPROP_CHANGEINSERTEDROWS
Привилегии столбцов DBPROP_COLUMNRESTRICT
Уведомление набора столбцов DBPROP_NOTIFYCOLUMNSET
Тип контента SSPROP_STREAM_CONTENTTYPE
Автоизвлечение курсора SSPROP_CURSORAUTOFETCH
Отложить столбец DBPROP_DEFERRED
Отложить подготовку SSPROP_DEFERPREPARE
Задержка обновлений объектов хранилища DBPROP_DELAYSTORAGEOBJECTS
Обратный поиск Возможность обратной выборки данных (DBPROP_CANFETCHBACKWARDS)
Удержание строк DBPROP_CANHOLDROWS
IAccessor DBPROP_IAccessor
IColumnsInfo DBPROP_IColumnsInfo
IColumnsRowset DBPROP_IColumnsRowset
IConnectionPointContainer DBPROP_IConnectionPointContainer
IConvertType DBPROP_IConvertType
Неподвижные ряды DBPROP_IMMOBILEROWS
IRowset DBPROP_IRowset
IRowsetChange DBPROP_IRowsetChange
IRowsetIdentity DBPROP_IRowsetIdentity
IRowsetInfo DBPROP_IRowsetInfo
IRowsetLocate DBPROP_IRowsetLocate
IRowsetResynch DBPROP_IRowsetResynch
IRowsetScroll DBPROP_IRowsetScroll
IRowsetUpdate DBPROP_IRowsetUpdate
ISequentialStream DBPROP_ISequentialStream
ISupportErrorInfo DBPROP_ISupportErrorInfo
Литеральные закладки DBPROP_LITERALBOOKMARKS
Идентичность литеральной строки DBPROP_LITERALIDENTITY
Режим блокировки DBPROP_LOCKMODE
Максимальное количество открытых строк DBPROP_MAXOPENROWS
Максимальное число ожидающих строк DBPROP_MAXPENDINGROWS
Максимальные строки DBPROP_MAXROWS
Степень детализации уведомлений DBPROP_NOTIFICATIONGRANULARITY
Этапы уведомлений Этапы уведомлений DBPROP
Объекты, трансактированные DBPROP_TRANSACTEDOBJECT
Изменения других видны DBPROP_OTHERUPDATEDELETE (другие обновления/удаления)
Другие вставки видимы DBPROP_OTHERINSERT
Свойство кодирования выходных данных DBPROP_OUTPUTENCODING
Свойство выходного потока DBPROP_OUTPUTSTREAM
Собственные изменения, видимые DBPROP_OWNUPDATEDELETE
Видимость собственных вставок DBPROP_OWNINSERT
Сохранение при прерывании DBPROP_ABORTPRESERVE
Сохранение при фиксации DBPROP_COMMITPRESERVE
Быстрая перезагрузка DBPROP_QUICKRESTART
Повторная обработка событий DBPROP_REENTRANTEVENTS
Удаление удаленных строк DBPROP_REMOVEDELETED
Отчет о нескольких изменениях DBPROP_REPORTMULTIPLECHANGES
Вставки, ожидающие возврата DBPROP_RETURNPENDINGINSERTS
Уведомление об удалении строк DBPROP_NOTIFYROWDELETE
Уведомление о первом изменении строки DBPROP_NOTIFYROWFIRSTCHANGE
Уведомление о добавлении строк DBPROP_NOTIFYROWINSERT
Привилегии для строк DBPROP_ROWRESTRICT
Уведомление о повторной синхронизации строк DBPROP_NOTIFYROWRESYNCH
Модель потоков строк DBPROP_ROWTHREADMODEL
Уведомление об отмене изменения строки DBPROP_NOTIFYROWUNDOCHANGE
Уведомление об отмене удаления строки DBPROP_NOTIFYROWUNDODELETE
Уведомление об отмене вставки строк DBPROP_NOTIFYROWUNDOINSERT
Уведомление об обновлении строк DBPROP_NOTIFYROWUPDATE
Уведомление об изменении положения набора строк DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
Уведомление о выпуске набора строк DBPROP_NOTIFYROWSETRELEASE
Прокрутка назад DBPROP_CANSCROLLBACKWARDS
Курсор сервера DBPROP_SERVERCURSOR
Серверные данные при вставке DBPROP_SERVERDATAONINSERT
Пропуск удаленных закладок DBPROP_BOOKMARKSKIP
Уникальная идентичность строки DBPROP_STRONGIDENTITY
Обновляемость DBPROP_UPDATABILITY
Использование закладок DBPROP_BOOKMARKS
Корневой элемент XML SSPROP_STREAM_XMLROOT
XSL SSPROP_STREAM_XSL

Дополнительные сведения о реализации и функциональные сведения о поставщике OLE DB Microsoft SQL Server см. в поставщике SQL Server.

См. также

Свойство ConnectionString (ADO)Свойство провайдера (ADO)Объект Recordset (ADO)