分享方式:


SQL Server Native Client 中的 BLOB 和 OLE 物件

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics 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、nvarchar 和 varbinary 數據類型的數據行,其大小上限設定為無限制,將會透過架構數據列集和傳回數據行數據類型的介面來表示為 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)
使用大型實值型別