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

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Server Native Client OLE DB プロバイダーは、iSequentialStream インターフェイスを公開して、ntexttextimagevarchar(max)、nvarchar(max)varbinary(max)、xml データ型をバイナリ ラージ オブジェクト (BLOB) としてSQL Serverするコンシューマー アクセスをサポートします。 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されていない場合、コンシューマーは OLE DB プロバイダーのカーソルサポート行セットSQL Server Native Clientを使用して行データを取得するか、他の行値を取得する前にすべての大きなデータ値を処理する必要があります。 DBPROP_ACCESSORDERがDBPROPVAL_AO_RANDOMされている場合、SQL Server Native Client OLE DB プロバイダーは、すべての xml データ型をバイナリ ラージ オブジェクト (BLOB) としてキャッシュして、任意の順序でアクセスできるようにします。

このセクションの内容

参照

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