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


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

Применимо к:SQL Server

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server .

Начиная с SQL Server 2008 (10.0.x) и 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. В этом случае поставщик не будет проверять длину значения, а запросит и возвратит все данные, которые можно получить по потоку. Это изменение будет применяться ко всем типам больших объектов и XML, но только при подключении к серверам SQL Server 2005 (9.x) (или более поздних версий). Это предоставляет разработчикам большую гибкость, в то же время поддерживая согласованность и обратную совместимость с существующими приложениями и серверами предыдущих версий.

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

См. также

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