BLOB 和 OLE 对象

SQL Server Native Client OLE DB 访问接口公开 ISequentialStream 接口,以支持使用者以二进制大型对象(BLOB)的形式访问 SQL Server ntexttextimagevarchar(max)、nvarchar(max)varbinary(max)和 xml 数据类型。 ISequentialStream 上的 Read 方法允许使用者检索可管理的区块中的大量数据。

有关演示此功能的示例,请参阅“设置大型数据”(OLE DB)。

当使用者在绑定进行数据修改的访问器中提供接口指针时,SQL Server Native Client OLE DB 访问接口可以使用使用者实现的 IStorage 接口。

对于大型值数据类型,SQL Server Native Client OLE DB 访问接口检查 IRowset 和 DDL 接口中的类型大小假设。 具有 varcharnvarcharvarbinary 数据类型且最大大小设置为无限制的列将通过返回列数据类型的架构行集和接口表示为 ISLONG。

SQL Server Native Client OLE DB 访问接口分别将 varchar(max)varbinary(max)nvarchar(max) 类型分别公开为 DBTYPE_STR、DBTYPE_BYTES 和 DBTYPE_WSTR。

若要使用这些类型,应用程序具有以下选项:

  • 绑定为类型(DBTYPE_STR、DBTYPE_BYTES、DBTYPE_WSTR)。 如果缓冲区不够大,将发生截断,与以前版本中的这些类型完全一样(尽管现在有更大的值可用)。

  • 绑定为类型,同时指定DBTYPE_BYREF。

  • 绑定为 DBTYPE_IUNKNOWN 并使用流处理。

如果绑定到 DBTYPE_IUNKNOWN,则使用 ISequentialStream 流功能。 SQL Server Native Client OLE DB 访问接口支持将输出参数绑定为大型值数据类型的DBTYPE_IUNKNOWN,以方便存储过程将这些数据类型作为返回值返回值,这些返回值将作为DBTYPE_IUNKNOWN公开给客户端。

存储对象限制

  • SQL Server Native Client OLE DB 访问接口只能支持单个打开的存储对象。 尝试打开多个存储对象(在多个 ISequentialStream 接口指针上获取引用)返回DBSTATUS_E_CANTCREATE。

  • 在 SQL Server Native Client OLE DB 访问接口中,DBPROP_BLOCKINGSTORAGEOBJECTS只读属性的默认值VARIANT_TRUE。 这表示如果存储对象处于活动状态,某些方法(存储对象上的方法除外)将失败并E_UNEXPECTED。

  • 创建引用存储对象的行访问器时,必须由 SQL Server Native Client OLE DB 访问接口知道由使用者实现的存储对象呈现的数据长度。 使用者必须在用于创建访问器的 DBBINDING 结构中绑定长度指示器。

  • 如果某行包含多个大型数据值且DBPROP_ACCESSORDER未DBPROPVAL_AO_RANDOM,则使用者必须在检索其他行值之前使用 SQL Server Native Client OLE DB 访问接口游标支持的行集来检索行数据或处理所有大型数据值。 如果DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM,SQL Server Native Client OLE DB 访问接口会将所有 xml 数据类型缓存为二进制大型对象(BLOB),以便可以按任意顺序访问它。

本节中

另请参阅

SQL Server Native Client (OLE DB)
使用大值类型