BLOBs and OLE Objects
SQLOLEDB exposes the ISequentialStream interface to support consumer access to SQL Server text and image data types as Binary Large Objects (BLOBs). The Read method on ISequentialStream allows the consumer to retrieve large amounts of data in manageable chunks.
SQLOLEDB can use a consumer-implemented IStorage interface when the consumer provides the interface pointer in an accessor bound for data modification.
SQLOLEDB Storage Object Limitations
-
SQLOLEDB can support only a single open storage object. Attempts to open more than one storage object (attempts to get a reference on more than one ISequentialStream interface pointer) return DBSTATUS_E_CANTCREATE.
-
SQLOLEDB storage objects are not blocking.
-
The length of data presented by a consumer-implemented storage object must be made known to SQLOLEDB when the row accessor that references the storage object is created. The consumer must bind a length indicator in the DBBINDING structure used for accessor creation.
-
SQLOLEDB supports ISequentialStream::Write for zero-length strings and NULL values only. Attempts to write more than zero bytes through ISequentialStream::Write fail.
-
If a row contains more than a single large data value, the consumer must either use a SQLOLEDB cursor-supported rowset to retrieve row data or process all large data values prior to retrieving other row values.