MDAC 2.5 SDK - OLE DB Programmer's Reference
Chapter 7: BLOBs and COM Objects
BLOBs can be accessed as in-memory data—a sequence of bytes sent or retrieved as a single unit—or as storage objects, through ISequentialStream, IStream, IStorage, or ILockBytes.
The provider can set the DBCOLUMNFLAGS_ISLONG flag to inform the consumer that the provider supports treating BLOBs as storage objects. Although the consumer can still choose to access the BLOB as in-memory data, there might be provider-specific problems in doing so. For example, the BLOB might be truncated due to machine limits on memory. Also, limitations on BLOB columns might apply to binding BLOBs as in-memory data. For example, IRowset::GetData might fail if called more than once for the BLOB. For more information on possible limitations when accessing BLOB columns, see "Limitations of Storage Objects" in this chapter.
If the DBCOLUMNFLAGS_ISLONG flag is not set, the consumer can access the BLOB as in-memory data. It is provider-specific whether the provider supports reading such data through a storage interface. Most consumers allocate sufficient memory to hold such columns in their entirety and treat them as in-memory data.