Большие двоичные объекты и объекты OLE
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Драйвер OLE DB для SQL Server предоставляет интерфейс ISequentialStream для поддержки доступа потребителей к SQL Server ntext, text1, image, varchar(max), nvarchar(max), varbinary(max)и xml-типов данных в виде двоичных больших объектов (BLOB). Метод Read интерфейса ISequentialStream позволяет потребителю получать большой объем данных в виде фрагментов данных, с которыми удобно работать.
[1]. Использование интерфейса ISequentialStream для вставки закодированных данных UTF-8 в устаревший текстовый столбец ограничено только серверами, поддерживающими UTF-8. Попытка выполнить этот сценарий при нацеливание на сервер, который не поддерживает UTF-8, приведет к тому, что драйвер публикует следующее сообщение об ошибке: "Потоковая передача не поддерживается по выбранному типу столбца".
Образец приложения, демонстрирующий эту возможность, см. в статье Задание данных больших объектов (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 Driver for SQL Server поддерживает привязку выходных параметров с типом данных больших значений как значения DBTYPE_IUNKNOWN. Это позволяет поддерживать ситуации, когда хранимая процедура возвращает такие типы данных для передачи клиенту. Эти значения возвращаются клиенту как DBTYPE_IUNKNOWN.
Ограничения объекта хранилища
OLE DB Driver for 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), чтобы они были доступны в любом порядке.
В этом разделе
См. также
Программирование драйвера OLE DB для SQL Server
Использование типов больших значений