SQL Server Native Client 中的 BLOB 和 OLE 物件

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

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

如需示範此功能的範例,請參閱設定大型資料 (OLE DB)

當取用者在系結以進行資料修改的存取子中提供介面指標時,SQL Server Native Client OLE DB 提供者可以使用取用者實作的IStorage介面。

對於大型實值資料類型,SQL Server Native Client OLE DB 提供者會檢查IRowset和 DDL 介面中的類型大小假設。 具有 Varchar、NvarcharVarbinary資料類型且大小上限設為無限制的資料行,將會透過傳回資料行資料類型的架構資料列集和介面,以 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) ,以便依任何順序存取。

本節內容

另請參閱

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