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


BLOB-объекты и объекты 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 Native Client проверяет допущения размера типов в интерфейсах 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 Native Client (OLE DB)
Использование типов больших значений