Большие двоичные объекты и OLE в SQL Server Native ClientBLOBs and OLE Objects in SQL Server Native Client

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

SQL ServerSQL ServerПоставщик OLE DB собственного клиента предоставляет интерфейс ISequentialStream для поддержки доступа потребителя к SQL ServerSQL Server типам данных ntext, Text, Image, varchar (max), nvarchar (max), varbinary (max) и XML в виде больших двоичных объектов (BLOB).The SQL ServerSQL Server Native Client OLE DB provider exposes the ISequentialStream interface to support consumer access to SQL ServerSQL Server ntext, text, image, varchar(max), nvarchar(max), varbinary(max), and xml data types as binary large objects (BLOBs). Метод Read интерфейса ISequentialStream позволяет потребителю получать большой объем данных в виде фрагментов данных, с которыми удобно работать.The Read method on ISequentialStream lets the consumer retrieve much data in manageable chunks.

Образец приложения, демонстрирующий эту возможность, см. в статье Задание данных больших объектов (OLE DB).For a sample demonstrating this feature, see Set Large Data (OLE DB).

SQL ServerSQL ServerПоставщик OLE DB собственного клиента может использовать реализуемый потребителем интерфейс IStorage , когда потребитель предоставляет указатель интерфейса в методе доступа, связанном с изменением данных.The SQL ServerSQL Server Native Client OLE DB provider can use a consumer-implemented IStorage interface when the consumer provides the interface pointer in an accessor bound for data modification.

Для типов данных больших значений SQL ServerSQL Server поставщик собственного клиента OLE DB проверяет предположения о размере типов в интерфейсах IROWSET и DDL.For large value data types, the SQL ServerSQL Server Native Client OLE DB provider checks for type size assumptions in IRowset and DDL interfaces. Столбцы с типами данных varchar, nvarcharи varbinary с максимальным размером, установленным в значение unlimited, будут представлены как длинные через наборы строк схемы и интерфейсы, возвращающие типы данных столбцов.Columns with varchar, nvarchar, and varbinary data types with max size set to unlimited will be represented as ISLONG through the schema rowsets and interfaces returning column data types.

SQL ServerSQL ServerПоставщик OLE DB собственного клиента предоставляет типы varchar (max), varbinary (max) и nvarchar (max) как DBTYPE_STR, DBTYPE_BYTES и DBTYPE_WSTR соответственно.The SQL ServerSQL Server Native Client OLE DB provider exposes the varchar(max), varbinary(max) and nvarchar(max) types as DBTYPE_STR, DBTYPE_BYTES and DBTYPE_WSTR respectively.

Для работы с этими типами приложение имеет следующие возможности.To work with these types an application has the following options:

  • Выполните привязку, указав тип (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR).Bind as the type (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Если буфер недостаточно большой, будет выполнено усечение — точно так же, как в предыдущих версиях (хотя сейчас доступны большие значения).If the buffer is not big enough truncation will occur, exactly as for these types in previous releases (although larger values are now available).

  • Выполните привязку, указав тип и задав DBTYPE_BYREF.Bind as the type and also specify DBTYPE_BYREF.

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

При привязке к DBTYPE_IUNKNOWN используется потоковая возможность ISequentialStream.If bound to DBTYPE_IUNKNOWN, ISequentialStream stream functionality is used. SQL ServerSQL ServerПоставщик OLE DB собственного клиента поддерживает привязку выходных параметров как DBTYPE_IUNKNOWN для типов данных больших значений, чтобы упростить сценарии, в которых хранимая процедура возвращает эти типы данных в виде возвращаемых значений, которые будут предоставлены клиенту как DBTYPE_IUNKNOWN.The SQL ServerSQL Server Native Client OLE DB provider supports binding output parameters as DBTYPE_IUNKNOWN for large value data types to facilitate scenarios where a stored procedure returns these data types as return values which will be exposed as DBTYPE_IUNKNOWN to the client.

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

  • SQL ServerSQL ServerПоставщик OLE DB собственного клиента может поддерживать только один открытый объект хранилища.The SQL ServerSQL Server Native Client OLE DB provider can support only a single open storage object. При попытке открыть несколько объектов хранилища (получить ссылку на несколько указателей интерфейса ISequentialStream) возвращается DBSTATUS_E_CANTCREATE.Attempts to open more than one storage object (to get a reference on more than one ISequentialStream interface pointer) return DBSTATUS_E_CANTCREATE.

  • В SQL ServerSQL Server поставщике OLE DB собственного клиента значением свойства DBPROP_BLOCKINGSTORAGEOBJECTS только для чтения является VARIANT_TRUE.In the SQL ServerSQL Server Native Client OLE DB provider, the default value of the DBPROP_BLOCKINGSTORAGEOBJECTS read-only property is VARIANT_TRUE. Оно указывает, что если имеется активный объект хранилища, некоторые методы (не относящиеся к объектам хранилища) завершатся ошибкой E_UNEXPECTED.This indicates that if a storage object is active, some methods (other than those on the storage objects) will fail with E_UNEXPECTED.

  • Длина данных, представленных объектом хранилища, реализованным потребителем, должна быть известна SQL ServerSQL Server поставщику OLE DB собственного клиента при создании метода доступа к строке, ссылающегося на объект хранилища.The length of data presented by a consumer-implemented storage object must be made known to the SQL ServerSQL Server Native Client OLE DB provider when the row accessor that references the storage object is created. Потребитель должен выполнить привязку признака длины в структуре DBBINDING, которая используется для создания метода доступа.The consumer must bind a length indicator in the DBBINDING structure used for accessor creation.

  • Если строка содержит больше одного большого значения данных, а DBPROP_ACCESSORDER не DBPROPVAL_AO_RANDOM, потребитель должен либо использовать SQL ServerSQL Server собственный клиент OLE DBный набор строк с поддержкой курсора поставщика, чтобы получить данные строк или обработать все большие значения данных перед получением других значений строк.If a row contains more than a single large data value and DBPROP_ACCESSORDER is not DBPROPVAL_AO_RANDOM, the consumer must either use a SQL ServerSQL Server Native Client OLE DB provider cursor-supported rowset to retrieve row data or process all large data values before retrieving other row values. Если DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM, то SQL ServerSQL Server поставщик OLE DB собственного клиента кэширует все типы данных XML как большие двоичные объекты (BLOB), чтобы к ним можно было обращаться в любом порядке.If DBPROP_ACCESSORDER is DBPROPVAL_AO_RANDOM, the SQL ServerSQL Server Native Client OLE DB provider caches all the xml data types as binary large objects (BLOBs) so that it can be accessed in any order.

в этом разделеIn This Section

См. также:See Also

SQL Server Native Client (OLE DB) SQL Server Native Client (OLE DB)
Использование типов больших значенийUsing Large Value Types