次の方法で共有


Microsoft Cursor Service for OLE DB の概要

Microsoft Cursor Service for OLE DB は、データ プロバイダーのカーソル サポート機能を補完します。 その結果、ユーザーはすべてのデータ プロバイダーから比較的均一な機能を認識します。

Cursor Service を使用すると、動的プロパティを使用できるようになり、特定のメソッドの動作が強化されます。 たとえば、Optimize 動的プロパティを使用すると、一時インデックスを作成して、Find メソッドなどの特定の操作を容易にできます。

Cursor Service では、すべてのケースでバッチ更新がサポートされます。 また、静的カーソルなど、データ プロバイダーが提供できるカーソルの数が少ない場合に、動的カーソルなど、より多くの機能を持つカーソルの種類をシミュレートします。

キーワード

このサービス コンポーネントを呼び出すには、Recordset または Connection オブジェクトの CursorLocation プロパティを adUseClient 設定します。

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

動的プロパティ

CURSOR Service for OLE DB が呼び出されると、Recordset オブジェクトの Properties コレクションに次の動的プロパティが追加されます。 接続Recordset オブジェクトの動的プロパティの完全な一覧は、ADO 動的プロパティ インデックスに記載されています。 関連する OLE DB プロパティ名は、適切な場合、ADO プロパティ名の後のかっこ内に含まれます。

カーソル サービスが呼び出された後、一部の動的プロパティへの変更は、基になるデータ ソースには表示されません。 たとえば、RecordsetCommand Time out プロパティを設定すると、基になるデータ プロバイダーには表示されません。


Recordset1.CursorLocation = adUseClient     'invokes cursor service
Recordset1.Open "authors", _
    "Provider=SQLOLEDB;Data Source=DBServer;User Id=MyUserID;" & _
    "Password=<password>;Initial Catalog=pubs;",,adCmdTable
Recordset1.Properties.Item("Command Time out") = 50
' 'Command Time out' property on DBServer is still default (30).

アプリケーションで Cursor Service が必要であっても、基になるプロバイダーに動的プロパティを設定する必要がある場合は、Cursor Service を呼び出す前にプロパティを設定します。 コマンド オブジェクトのプロパティ設定は、カーソルの位置に関係なく、常に基になるデータ プロバイダーに渡されます。 そのため、コマンド オブジェクトを使用して、いつでもプロパティを設定することもできます。

手記

動的プロパティ DBPROP_SERVERDATAONINSERTは、基になるデータ プロバイダーによってサポートされている場合でも、カーソル サービスではサポートされません。

プロパティ名 説明
自動再計算 (DBPROP_ADC_AUTORECALC) Data Shaping Service で作成されたレコードセットの場合、この値は計算列と集計列の計算頻度を示します。 既定値 (値 =1) は、データ シェイプ サービスが値が変更されたと判断するたびに再計算されます。 値が 0 の場合、計算列または集計列は、階層が最初に構築されたときにのみ計算されます。
バッチ サイズ (DBPROP_ADC_BATCHSIZE) データ ストアに送信される前にバッチ処理できる更新ステートメントの数を示します。 バッチ内のステートメントが多いほど、データ ストアへのラウンド トリップが少なくなります。
子行のキャッシュ (DBPROP_ADC_CACHECHILDROWS) Data Shaping Service で作成されたレコードセットの場合、この値は、後で使用するために子レコードセットをキャッシュに格納するかどうかを示します。
カーソル エンジンのバージョン (DBPROP_ADC_CEVER) 使用されているカーソル サービスのバージョンを示します。
変更ステータスの維持 (DBPROP_ADC_MAINTAINCHANGESTATUS) 複数のテーブル結合で 1 つ以上の行を再同期するために使用されるコマンドのテキストを示します。
最適化 インデックスを作成するかどうかを示します。 Trueに設定すると、特定の操作の実行を向上させるためにインデックスの一時的な作成が承認されます。
名前の再構成 Recordsetの名前を示します。 現在または後続のデータ 整形コマンド内で参照できます。
Resync コマンド Unique Table プロパティが有効な場合に、Resync メソッドによって使用されるカスタム コマンド文字列を示します。
一意性カタログ Unique Table プロパティで参照されるテーブルを含むデータベースの名前を示します。
一意のスキーマ Unique Table プロパティで参照されるテーブルの所有者の名前を示します。
ユニークなテーブル 挿入、更新、または削除によって変更できる複数のテーブルから作成 レコードセット内の 1 つのテーブルの名前を示します。
更新条件 (DBPROP_ADC_UPDATECRITERIA) 更新中に発生する競合を処理するために、WHERE 句のどのフィールドが使用されているかを示します。
更新プログラムの再同期 (DBPROP_ADC_UPDATERESYNC) Unique Table プロパティが有効な場合に、Resync メソッドが UpdateBatch メソッド (およびその動作) の後に暗黙的に呼び出されるかどうかを示します。

Properties コレクションのインデックスとしてその名前を指定することで、動的プロパティを設定または取得することもできます。 たとえば、Optimize 動的プロパティの現在の値を取得して出力し、次のように新しい値を設定します。

Debug.Print rs.Properties("Optimize")
rs.Properties("Optimize") = True

組み込みのプロパティの動作

OLE DB の Cursor Service は、特定の組み込みプロパティの動作にも影響します。

プロパティ名 説明
CursorType Recordsetで使用できるカーソルの種類を補足します。
LockType Recordsetで使用できるロックの種類を補足します。 バッチ更新を有効にします。
並べ替え Recordset が並べ替えられる 1 つ以上のフィールド名と、各フィールドを昇順または降順で並べ替えるかどうかを指定します。

メソッドの動作

Cursor Service for OLE DB は、Field オブジェクトの Append メソッドの動作を有効または影響します。Recordset オブジェクトの OpenResyncUpdateBatch、および Save メソッドです。