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


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

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

Внимание

Собственный клиент SQL Server (часто сокращенный 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 .

Параметры строки соединения

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

SQLOLEDB

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

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

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

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

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

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

Примечание.

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

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

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

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

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

SQLOLEDB принимает амальгам ODBC, ANSI и SQL Server в качестве допустимого синтаксиса. Например, следующая инструкция SQL использует escape-последовательность 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-потока вместо объектов Recordset . Дополнительные сведения см. в разделе "Использование потоков для ввода команд и получения наборов результатов в потоки".

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

Microsoft SQL Server имеет тип данных с именем sql_variant. Как и DBTYPE_VARIANT OLE 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 (не ЮНИКОД) и BIGINT. Использование подтипов, отличных от перечисленных выше, будет работать правильно.

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

  • Приведение нескольких типов данных приведет к тому, что типы не совпадают. Например, принудить sql_variant с подтипом GUID к DBTYPE_VARIANT приведет к подтипу safearray(bytes). Преобразование этого типа обратно в 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 вставляет несколько динамических свойств в коллекцию свойств нераскрытых объектов Connection, Recordset и Command .

Следующие таблицы представляют собой перекрестный индекс имен 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
Connect Timeout 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 в списке выборки DBPROP_ORDERBYCOLUMNSINSELECT
Доступность параметра вывода DBPROP_OUTPUTPARAMETERAVAILABILITY
Методы доступа с передачей по ссылке DBPROP_BYREFACCESSORS
Пароль DBPROP_AUTH_PASSWORD
Persist Security Info DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO
Тип постоянного идентификатора DBPROP_PERSISTENTIDTYPE
Поведение при подготовке прерывания работы DBPROP_PREPAREABORTBEHAVIOR
Поведение при подготовке фиксации DBPROP_PREPARECOMMITBEHAVIOR
Термин процедуры DBPROP_PROCEDURETERM
Prompt DBPROP_INIT_PROMPT
Понятное имя поставщика DBPROP_PROVIDERFRIENDLYNAME
Имя поставщика DBPROP_PROVIDERFILENAME
Версия поставщика DBPROP_PROVIDERVER
Источник данных только для чтения DBPROP_DATASOURCEREADONLY
Преобразования набора строк по команде 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

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

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

Имя свойства 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
Уведомление о разблокировании набора строк DBPROP_NOTIFYROWSETRELEASE
Обратная прокрутка DBPROP_CANSCROLLBACKWARDS
Курсор сервера DBPROP_SERVERCURSOR
Пропуск удаленных закладок DBPROP_BOOKMARKSKIPPED
Строгая идентификация строки DBPROP_STRONGITDENTITY
Уникальные строки DBPROP_UNIQUEROWS
Обновляемость DBPROP_UPDATABILITY
Использование закладок DBPROP_BOOKMARKS

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

Следующие свойства добавляются в коллекцию свойств объекта 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_NOTIFICATIONPHASES
Обработано объектов транзакций DBPROP_TRANSACTEDOBJECT
Видимость изменений, сделанных другими пользователями DBPROP_OTHERUPDATEDELETE
Видимость строк, вставленных другими пользователями DBPROP_OTHERINSERT
Свойство кодирования выходных данных DBPROP_OUTPUTENCODING
Свойство Output Stream 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)Provider Property (ADO)Recordset Object (ADO)