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 Ntext、text、image、Varchar (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) ,以便依任何順序存取。
本節內容
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應