オブジェクト内の BLOB と OLE SQL Server Native Client

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

Native Client OLE DB プロバイダーは SQL Server 、ntext、text、image、varchar(max) 、nvarchar(max) 、varbinary(max) 、xml データ型へのコンシューマー アクセスをサポートする ISequentialStream インターフェイスをバイナリ ラージ オブジェクト SQL Server (BLOB)として公開します。 ISequentialStreamRead メソッドを使用すると、扱いやすい単位で大量のデータを取得できます。

この機能を示すサンプルについては、「大きなデータの設定 (OLE DB)」を参照してください。

Native Client OLE DBプロバイダーは、コンシューマーがデータ変更用にバインドされたアクセサーにインターフェイス ポインターを提供する場合に、コンシューマーが実装した SQL Server IStorage インターフェイスを使用できます。

大きな値のデータ型の場合 SQL Server 、Native Client OLE DBプロバイダーは 、IRowset インターフェイスと DDL インターフェイスで型サイズの前提条件を確認します。 最大サイズ 無制限に設定された **varchar、nvarchar、**および varbinary データ型を持つ列は、列データ型を返すスキーマ行セットとインターフェイスを通じて ISLONG として表されます。

SQL ServerNative 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 ストリーム機能が使用されます。 Native Client OLE DB プロバイダーは、大きな値のデータ型に対して出力パラメーターを DBTYPE_IUNKNOWN としてバインドすることで、ストアド プロシージャがこれらのデータ型を DBTYPE_IUNKNOWN としてクライアントに公開される戻り値として返すシナリオを容易にします。 SQL Server

ストレージ オブジェクトの制限事項

  • SQL ServerNative Client サービス プロバイダー OLE DB、1 つのオープン ストレージ オブジェクトのみをサポートできます。 複数の ISequentialStream インターフェイス ポインターへの参照を取得するために、複数のストレージ オブジェクトを開こうとすると、DBSTATUS_E_CANTCREATE が返されます。

  • Native Client OLE DB プロバイダーでは、読み取りDBPROP_BLOCKINGSTORAGEOBJECTSプロパティの既定値 SQL Server はVARIANT_TRUE。 この値は、ストレージ オブジェクトがアクティブである場合に、(ストレージ オブジェクト以外の) 一部のメソッドが失敗して E_UNEXPECTED が返されることを示します。

  • コンシューマーが実装したストレージ オブジェクトによって提示されるデータの長さは、ストレージ オブジェクトを参照する行アクセサーが作成されると、Native Client OLE DB プロバイダーに知られている必要 SQL Server があります。 コンシューマー側では、アクセサーの作成に使用する DBBINDING 構造体に長さのインジケーターをバインドする必要があります。

  • 行に 1 つ以上の大きなデータ値が含まれており、DBPROP_ACCESSORDER が DBPROPVAL_AO_RANDOM ではない場合、コンシューマーは Native Client OLE DB プロバイダーのカーソルでサポートされる行セットを使用して行データを取得するか、他の行値を取得する前に大きなデータ値を処理する必要があります。 SQL Server DBPROP_ACCESSORDERが DBPROPVAL_AO_RANDOM の場合、Native Client OLE DB プロバイダーは、すべての xml データ型をバイナリ ラージ オブジェクト (BLOB) としてキャッシュして、任意の順序でアクセスできます SQL Server 。

このセクションの内容

参照

SQL Server Native Client (OLE DB)
大きな値の型の使用