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


Большие двоичные объекты и объекты OLE

Поставщик OLE DB для собственного клиента SQL Server предоставляет интерфейс ISequentialStream для поддержки доступа потребителя к типам данных SQL Server ntext, text, image, varchar(max), nvarchar(max), varbinary(max) и xml как к большим двоичным объектам (BLOB). Метод Read интерфейса ISequentialStream позволяет потребителю получать большой объем данных в виде фрагментов данных, с которыми удобно работать.

Образец приложения, демонстрирующий эту функцию, см. в разделе Задание данных больших объектов (OLE DB).

Поставщик OLE DB для собственного клиента SQL Server может использовать реализованный потребителем интерфейс IStorage, если потребитель предоставляет указатель на него в методе доступа, предназначенном для изменения данных.

В случае с типами данных больших значений поставщик OLE DB для собственного клиента SQL Server проверяет размер типа, который предполагают интерфейс IRowset и интерфейсы DDL-библиотек. Столбцы с типами данных varchar, nvarchar и varbinary и неограниченным максимальным размером будут представлены как ISLONG через наборы строк схемы и интерфейсы, возвращающие типы данных столбца.

Поставщик OLE DB для собственного клиента SQL Server представляет типы данных varchar(max), varbinary(max) и nvarchar(max) как DBTYPE_STR, DBTYPE_BYTES и DBTYPE_WSTR соответственно.

Для работы с этими типами приложение имеет следующие возможности.

  • Выполните привязку, указав тип (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Если буфер недостаточно большой, будет выполнено усечение — точно так же, как в предыдущих версиях (хотя сейчас доступны большие значения).

  • Выполните привязку, указав тип и задав DBTYPE_BYREF.

  • Выполните привязку, указав тип DBTYPE_IUNKNOWN, и используйте потоковую передачу.

При привязке к DBTYPE_IUNKNOWN используется потоковая возможность ISequentialStream. Поставщик OLE DB для собственного клиента SQL Server поддерживает выходные параметры привязки как тип DBTYPE_IUNKNOWN для типов данных больших значений, чтобы облегчить ситуацию, когда хранимая процедура возвращает значения этих типов данных, которые будут представлены клиенту как тип DBTYPE_IUNKNOWN.

Ограничения объекта хранилища

  • Поставщик OLE DB для собственного клиента SQL Server поддерживает только один открытый объект хранилища. При попытке открыть несколько объектов хранилища (получить ссылку на несколько указателей интерфейса ISequentialStream) возвращается DBSTATUS_E_CANTCREATE.

  • В поставщике OLE DB для собственного клиента SQL Server значением по умолчанию для свойства DBPROP_BLOCKINGSTORAGEOBJECTS, предназначенного только для чтения, является VARIANT_TRUE. Оно указывает, что если имеется активный объект хранилища, некоторые методы (не относящиеся к объектам хранилища) завершатся ошибкой E_UNEXPECTED.

  • Длина данных, представляемых объектами хранилища, которые реализует потребитель, должна быть известна поставщику OLE DB для собственного клиента SQL Server при создании метода доступа к строке, ссылающемся на объект хранилища. Потребитель должен выполнить привязку признака длины в структуре DBBINDING, которая используется для создания метода доступа.

  • Если строка содержит несколько одиночных значений больших типов данных и DBPROP_ACCESSORDER не имеет значения DBPROPVAL_AO_RANDOM, потребитель должен или использовать набор строк с поддержкой курсоров поставщика OLE DB для собственного клиента SQL Server, чтобы получить данные строк, или обработать все значения больших типов данных, прежде чем получить значения других строк. Если DBPROP_ACCESSORDER имеет значение DBPROPVAL_AO_RANDOM, поставщик OLE DB для собственного клиента SQL Server кэширует все типы данных xml как большие двоичные объекты (BLOB), чтобы они были доступны в любом порядке.

В этом разделе

См. также

Основные понятия

Собственный клиент SQL Server (OLE DB)

Использование типов больших значений