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

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

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

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

Это изменение влияет на все интерфейсы, которые осуществляют передачу данных, в первую очередь IRowset::GetData, ICommand::Execute и IRowsetFastLoad::InsertRow.