Поделиться через


Поддержка FILESTREAM (OLE DB)

Начиная с SQL Server 2008 и SQL Server Native Client 10.0, OLE DB поддерживает расширенную функцию FILESTREAM. Дополнительные сведения об этой функции см. в разделе Поддержка FILESTREAM. Примеры см. в статье Filestream and OLE DB (Filestream и OLE DB).

Для отправки и получения значений varbinary(max) размером больше 2 ГБ приложение использует для привязки параметров и результата тип DBTYPE_IUNKNOWN. Для получения параметров поставщик должен вызвать IUnknown::QueryInterface для ISequentialStream и для получения результатов, возвращающих ISequentialStream.

Для OLE DB проверка, связанная со значениями ISequentialStream, выполняется менее строго. Если wType находится DBTYPE_IUNKNOWN в DBBINDING структуре, проверку длины можно отключить, опустив DBPART_LENGTH значение из dwPart или установив для длины данных (при смещении obLength в буфере данных) значение ~0. В этом случае поставщик не будет проверять длину значения, а запросит и возвратит все данные, которые можно получить по потоку. Это изменение будет применено ко всем типам больших объектов (LOB) и XML, но только при подключении к серверам SQL Server 2005 (или более поздней версии). Это предоставляет разработчикам большую гибкость, в то же время поддерживая согласованность и обратную совместимость с существующими приложениями и серверами предыдущих версий.

Это изменение затрагивает все интерфейсы, которые передают данные, в основном IRowset::GetData, ICommand::Execute и IRowsetFastLoad::InsertRow.

См. также:

Программирование собственного клиента SQL Server