共用方式為


BLOB 與 OLE 物件

SQL Server Native Client OLE DB 提供者會公開 ISequentialStream 介面來支援取用者存取 SQL Serverntexttextimagevarchar(max)nvarchar(max)varbinary(max) 以及 xml 資料類型,做為二進位大型物件 (BLOB)。ISequentialStream 上的 Read 方法可讓取用者在可管理的區塊中擷取更多資料。

如需示範此功能的範例,請參閱 CodePlex 上所提供setting large data的 OLE BD 範例。如需詳細資訊,請參閱<SQL Server Database Engine 範例>。

當取用者在針對資料修改所繫結的存取子中提供介面指標時,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_BYTES、DBTYPE_STR、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),因此可以用任何順序進行存取。

變更記錄

更新的內容

已更新範例的連結。