Blobs y objetos OLE en SQL Server Native ClientBLOBs and OLE Objects in SQL Server Native Client

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data WarehouseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data Warehouse

El SQL ServerSQL Server proveedor de OLE DB de Native Client expone la interfaz ISequentialStream para admitir el acceso de consumidor a SQL ServerSQL Server tipos de datos ntext, Text, Image, VARCHAR (Max), nvarchar (Max), varbinary (Max) y XML como objetos binarios grandes (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). El método Read de ISequentialStream permite al consumidor recuperar muchos datos en fragmentos fáciles de administrar.The Read method on ISequentialStream lets the consumer retrieve much data in manageable chunks.

Para obtener un ejemplo que muestra esta característica, consulte Establecimiento de datos grandes (OLE DB).For a sample demonstrating this feature, see Set Large Data (OLE DB).

El SQL ServerSQL Server proveedor de OLE DB de Native Client puede utilizar una interfaz IStorage implementada por el consumidor cuando el consumidor proporciona el puntero de interfaz en un descriptor de acceso enlazado para la modificación de datos.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.

En el caso de los tipos de datos de valores grandes, el SQL ServerSQL Server proveedor de OLE DB de Native Client comprueba las suposiciones de tamaño de tipo en las interfaces IROWSET e 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. Las columnas con tipos de datos VARCHAR, nvarchar y varbinary con un tamaño máximo establecido en Unlimited se representarán como ISLONG a través de los conjuntos de filas de esquema e interfaces que devuelven tipos de datos de columna.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.

El SQL ServerSQL Server proveedor de OLE DB de Native Client expone los tipos VARCHAR (Max), varbinary (Max) y nvarchar (Max) como DBTYPE_STR, DBTYPE_BYTES y DBTYPE_WSTR respectivamente.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.

Para trabajar con estos tipos, una aplicación tiene las siguientes opciones:To work with these types an application has the following options:

  • Enlazar como el tipo (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR).Bind as the type (DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR). Si el búfer no es suficientemente grande, se producirá un truncamiento, exactamente igual que ocurría con estos tipos en las versiones anteriores (aunque ahora hay valores mayores).If the buffer is not big enough truncation will occur, exactly as for these types in previous releases (although larger values are now available).

  • Enlazar como el tipo y también especificar DBTYPE_BYREF.Bind as the type and also specify DBTYPE_BYREF.

  • Enlazar como DBTYPE_IUNKNOWN y usar la transmisión por secuencias.Bind as DBTYPE_IUNKNOWN and use streaming.

Si se enlaza a DBTYPE_IUNKNOWN, se utiliza la funcionalidad de flujo de ISequentialStream.If bound to DBTYPE_IUNKNOWN, ISequentialStream stream functionality is used. El SQL ServerSQL Server proveedor de OLE DB de Native Client admite parámetros de salida de enlace como DBTYPE_IUNKNOWN para tipos de datos de valores grandes con el fin de facilitar escenarios en los que un procedimiento almacenado devuelve estos tipos de datos como valores devueltos que se expondrán como DBTYPE_IUNKNOWN al cliente.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.

Limitaciones de los objetos de almacenamientoStorage Object Limitations

  • El SQL ServerSQL Server proveedor de OLE DB de Native Client solo puede admitir un único objeto de almacenamiento abierto.The SQL ServerSQL Server Native Client OLE DB provider can support only a single open storage object. Cuando se intenta abrir más de un objeto de almacenamiento (para obtener una referencia en más de un puntero de interfaz ISequentialStream), se recibe 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.

  • En el SQL ServerSQL Server proveedor de OLE DB de Native Client, se VARIANT_TRUE el valor predeterminado de la propiedad DBPROP_BLOCKINGSTORAGEOBJECTS de solo lectura.In the SQL ServerSQL Server Native Client OLE DB provider, the default value of the DBPROP_BLOCKINGSTORAGEOBJECTS read-only property is VARIANT_TRUE. Esto indica que si un objeto de almacenamiento está activo, algunos métodos (salvo en los que están en los objetos de almacenamiento) sufrirán un error con 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.

  • La longitud de los datos presentados por un objeto de almacenamiento implementado por el consumidor debe ser conocida por el SQL ServerSQL Server proveedor de OLE DB de Native Client cuando se crea el descriptor de acceso de fila que hace referencia al objeto de almacenamiento.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. El consumidor debe enlazar un indicador de longitud de la estructura DBBINDING que se utiliza para la creación del descriptor de acceso.The consumer must bind a length indicator in the DBBINDING structure used for accessor creation.

  • Si una fila contiene más de un valor de datos de gran tamaño y DBPROP_ACCESSORDER no es DBPROPVAL_AO_RANDOM, el consumidor debe usar un SQL ServerSQL Server conjunto de filas compatible con cursores de proveedor de OLE DB de cliente nativo para recuperar los datos de fila o procesar todos los valores de datos grandes antes de recuperar otros valores de fila.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. Si DBPROP_ACCESSORDER es DBPROPVAL_AO_RANDOM, el SQL ServerSQL Server proveedor de OLE DB de Native Client almacena en caché todos los tipos de datos XML como objetos binarios grandes (BLOB) para que se pueda tener acceso a ellos en cualquier orden.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.

En esta secciónIn This Section

Consulte tambiénSee Also

SQL Server Native Client (OLE DB) SQL Server Native Client (OLE DB)
Usar tipos de valor grandeUsing Large Value Types