SQL Server Native Client の BLOB と OLE オブジェクト
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server Native Client OLE DB プロバイダーは、
この機能を示すサンプルについては、「大きなデータの設定 (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_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) としてキャッシュし、任意の順序でアクセスできるようにします。