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


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

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

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

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

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

Поставщик SQL SERVER NATIVE CLIENT OLE DB предоставляет типы 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. Поставщик SQL Server Native Client OLE DB поддерживает привязку выходных параметров в качестве DBTYPE_IUNKNOWN для типов данных больших значений, чтобы упростить сценарии, в которых хранимая процедура возвращает эти типы данных в качестве возвращаемых значений, которые будут предоставляться клиенту в качестве DBTYPE_IUNKNOWN.

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

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

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

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

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

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

См. также:

Собственный клиент SQL Server (OLE DB)
Использование типов больших значений