Microsoft Cursor Service for OLE DB の概要

Microsoft Cursor Service for OLE DB は、データ プロバイダーのカーソル サポート機能を補完するものです。 その結果、すべてのデータ プロバイダーで機能の統一感が向上します。

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

カーソル サービスでは、あらゆるケースでバッチ更新が可能になります。 また、静的カーソルのような機能性の低いカーソルしか提供されないデータ プロバイダーでも、動的カーソルなどのより機能的なカーソルの種類をシミュレートすることができます。

キーワード

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

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

動的プロパティ

Cursor Service for OLE DB が呼び出されると、次の動的プロパティが Recordset オブジェクトの Properties コレクションに追加されます。 Connection および 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=MyPassword;Initial Catalog=pubs;",,adCmdTable
Recordset1.Properties.Item("Command Time out") = 50
' 'Command Time out' property on DBServer is still default (30).

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

注意

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

プロパティ名 説明
Auto Recalc (DBPROP_ADC_AUTORECALC) データ シェイプ サービスで作成されたレコードセットの場合、この値は計算列と集計列の計算頻度を示します。 既定値 (値 = 1) は、データ シェイプ サービスによって値が変更されたと判断されるたびに再計算されます。 この値が 0 の場合は、階層が最初に構築されたときにのみ計算列または集計列が計算されます。
Batch Size (DBPROP_ADC_BATCHSIZE) データ ストアに送信される前にバッチ処理できる更新ステートメントの数を示します。 1 回のバッチ処理に含まれるステートメント数が多いほど、データ ストアへのラウンド トリップが少なくなります。
Cache Child Rows (DBPROP_ADC_CACHECHILDROWS) データ シェイプ サービスで作成されたレコードセットの場合、この値は、子レコードセットを後で使用できるようキャッシュに保存しておくかどうかを示します。
Cursor Engine Version (DBPROP_ADC_CEVER) 使用するカーソル サービスのバージョンを示します。
Maintain Change Status (DBPROP_ADC_MAINTAINCHANGESTATUS) 複数のテーブル結合で 1 つ以上の行を再同期するために使用するコマンドのテキストを示します。
最適化 インデックスを作成するかどうかを示します。 True に設定すると、特定の操作の実行速度を向上させるために一時的なインデックスの作成が許可されます。
Reshape Name (変形名) レコードセットの名前を示します。 現在またはそれ以降のデータ シェイプ コマンドで参照される場合があります。
Resync Command (再同期コマンド) Unique Table プロパティが有効な場合に Resync メソッドで使用されるカスタム コマンド文字列を示します。
Unique Catalog (一意のカタログ) Unique Table プロパティで参照されるテーブルを含むデータベースの名前を示します。
Unique Schema (一意のスキーマ) Unique Table プロパティで参照されるテーブルの所有者の名前を示します。
Unique Table 挿入、更新、または削除によって変更できる複数のテーブルから作成されたレコードセット内の 1 つのテーブルの名前を示します。
Update Criteria (DBPROP_ADC_UPDATECRITERIA) 更新中に発生する競合の処理に使用される WHERE 句のフィールドを示します。
Update Resync (DBPROP_ADC_UPDATERESYNC) Unique Table プロパティが有効な場合に、UpdateBatch メソッド (およびその動作) の後に Resync メソッドを暗黙的に呼び出すかどうかを示します。

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

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

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

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

プロパティ名 説明
CursorType レコードセットで利用可能なカーソルの種類を補完します。
LockType レコードセットで利用可能なロックの種類を補完します。 バッチ更新を可能にします。
Sort レコードセットの並べ替えに使用する 1 つ以上のフィールド名、および各フィールドの並べ替え順序が昇順か降順かを指定します。

メソッドの動作

Cursor Service for OLE DB は、Field オブジェクトの Append メソッドや、Recordset オブジェクトの OpenResyncUpdateBatchSave の各メソッドの動作を可能にし、あるいは影響を与えます。