次の方法で共有


BLOB と OLE オブジェクト

SQL Server Native Client OLE DB プロバイダーは 、ISequentialStream インターフェイスを公開して、SQL Server ntexttextimagevarchar(max)nvarchar(max)varbinary(max)、xml データ型へのコンシューマー アクセスをバイナリ ラージ オブジェクト (BLOB) としてサポートします。 ISequentialStreamRead メソッドを使用すると、コンシューマーは管理可能なチャンク内の多くのデータを取得できます。

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

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_STR、DBTYPE_BYTES、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 プロバイダーは、1 つのオープン ストレージ オブジェクトのみをサポートできます。 (複数の ISequentialStream インターフェイス ポインター上の参照を取得するために) 複数のストレージ オブジェクトを開こうとすると、DBSTATUS_E_CANTCREATEが返されます。

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

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

  • 行に 1 つ以上の大きなデータ値が含まれており、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)
大きな値型の使用