Бөлісу құралы:


BLOB-объекты и объекты OLE в собственном клиенте SQL Server

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Поставщик 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)
Использование типов больших значений