FILESTREAM 支持 (OLE DB)

适用于:SQL Server

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除 SQL Server Native Client(通常缩写为 SNAC)。 不建议在新的开发工作中使用 SQL Server Native Client OLE DB 提供程序(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 此后请切换到新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server

从 SQL Server 2008 (10.0.x) 和 SQL Server Native Client 10.0 开始,OLE DB 支持增强的 FILESTREAM 功能。 有关此功能的详细信息,请参阅 FILESTREAM 支持。 有关示例,请参阅 Filestream 和 OLE DB

为了发送和接收大于 2 GB 的 varbinary(max) 值,应用程序在参数和结果绑定中使用 DBTYPE_IUNKNOWN 。 对于参数,提供程序必须为 ISequentialStream 和返回 ISequentialStream 的结果调用 IUnknown::QueryInterface。

对于 OLE DB,对与 ISequentialStream 值相关的检查将放宽。 当 DBBINDING 结构中的 wType 是 DBTYPE_IUNKNOWN 时, 可以通过省略 dwPart 中的 DBPART_LENGTH 或将数据长度(数据缓冲区中的偏移 obLength)设置为 ~0 来禁用长度检查。 在此情况下,提供程序将不检查值的长度,并且将请求和返回可通过流提供的所有数据。 这一更改将适用于所有大型对象 (LOB) 类型和 XML,但只在连接到 SQL Server 2005 (9.x)(或更高版本)服务器时才适用。 这将为开发人员提供更高的灵活性,同时为现有应用程序和下级服务器维护一致性和向下兼容性。

这一更改会影响传输数据的所有接口,主要影响 IRowset::GetData、ICommand::Execute 和 IRowsetFastLoad::InsertRow。

另请参阅

SQL Server Native Client 编程