Общие сведения о поставщике Microsoft 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). Для разработки не рекомендуется использовать поставщик SQL Server Native Client OLE DB (SQLNCLI или SQLNCLI11) и устаревший поставщик 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=MyPassword;"

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

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

Примечание

При подключении к поставщику источника данных, который поддерживает проверка подлинности Windows, в строке подключения следует указать Trusted_Connection=yes или Integrated Security = SSPI вместо идентификатора пользователя и пароля.

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

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

Параметр Описание
Trusted_Connection Указывает режим проверки подлинности пользователя. Для этого параметра можно задать значение Да или Нет. Значение по умолчанию — Нет. Если для этого свойства задано значение Да, SQLOLEDB использует режим проверки подлинности Microsoft Windows NT для авторизации доступа пользователей к базе данных SQL Server, указанной значениями свойств Location и Datasource. Если для этого свойства задано значение Нет, SQLOLEDB использует смешанный режим для авторизации доступа пользователей к базе данных SQL Server. Имя входа и пароль SQL Server указываются в свойствах Идентификатор пользователя и Пароль.
Current Language Указывает имя языка 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.
Имя приложения Указывает имя клиентского приложения.
Идентификатор рабочей станции строка, идентифицирующая рабочую станцию.

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

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

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

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

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_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 вставляет несколько динамических свойств в коллекцию Свойства неоткрытых объектов Connection, Recordset и Command.

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

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

Следующие свойства добавляются в коллекцию Properties объекта 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 в списке выборки 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
Provider Name 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

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

Следующие свойства добавляются в коллекцию Properties объекта 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

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

Следующие свойства добавляются в коллекцию 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_NOTIFICATIONPHASES
Обработано объектов транзакций 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

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

См. также:

ConnectionString Property (ADO)Provider Property (ADO)Recordset Object (ADO)