Share via


サーバーからクライアントへのデータのプル

リモート データ アクセスは、Microsoft SQL Server から SQL Server Compact 3.5 クライアント データベースにデータをプルするときに開始されることがよくあります。サーバーからクライアントにデータをプルする場合は、SQL Server Compact 3.5 でプル操作を開始します。SQL Server Compact 3.5 では SQL Server データベースからデータを抽出し、SQL Server Compact 3.5 データベースのテーブルに格納します。

サーバーからデータをプルするために、アプリケーションでプログラムを使用して RDA を構成できます。いずれかの技法を使用してプル操作をセットアップおよび開始する際には、以下の項目を指定します。

  • データをプルする際のプル元のテーブル

  • Web サーバーに接続するために必要な Web サーバー認証

  • 使用されている SQL Server 認証

  • クライアントにコピーおよび反映されるテーブル

  • 監視テーブルやエラー テーブルなどの、プルのオプション

監視

アプリケーションでは、適切な監視オプションを設定して、SQL Server Compact 3.5 テーブルで行われた変更を監視できます。SQL Server Compact 3.5 ではすべての挿入、更新、および削除が監視されます。

このことにより、アプリケーションでは Push メソッドを呼び出し、変更内容を元の SQL Server テーブルに反映し直すことができます。

リモート データ アクセス (RDA) により監視されるプル操作とプッシュ操作では、オプティミスティック同時実行制御が使用されます。SQL Server では、プルされたレコードのロックは保持されません。アプリケーションで Push が呼び出されると、ローカルの SQL Server Compact 3.5 データベースに加えられた変更内容が SQL Server データベースに無条件に適用されます。このため、他のユーザーによって SQL Server データベースに加えられた変更内容は失われることがあります。

監視設定付き Pull メソッドと Push メソッドは、更新するレコードが論理的に他から切り離されており、競合の可能性が考えられない場合に限り使用してください。たとえば、フィールド サービス アプリケーションを例に考えると、各フィールド エンジニアが持っているサービス コールのリストが一意である場合は、監視設定付き Pull メソッドと Push メソッドを使用できます。

RDA_TRACKOPTION では、SQL Server Compact 3.5 でプルされたテーブルへの変更を監視するかどうかを指定します。Windows Mobile ベースのデバイス上でプルされたテーブルを更新し、変更されたレコードをプッシュして元の SQL Server テーブルに戻す場合は、TRACKINGON または TRACKINGON_INDEXES を指定します。TRACKINGON を指定した場合、プルしたテーブルに PRIMARY KEY 制約が作成されます。TRACKINGON_INDEXES を指定した場合、サーバー テーブルに存在する PRIMARY KEY 制約と追加インデックスが、プルされたテーブルに作成されます。いずれの場合も、ローカル テーブルに対する挿入処理、更新処理、および削除処理はすべて SQL Server Compact 3.5 によって監視されます。

注意

インデックスは、そのインデックスを構成する列がプルされた場合にのみ作成されます。関連テーブルが SQL Server Compact 3.5 データベースに存在するとは限らないので、プルされたテーブルには、参照整合性制約は作成されません。アプリケーション内のコードによって、これらの制約を追加する必要があります。

アプリケーションで Push メソッドが呼び出されると、SQL Server Compact 3.5 は変更追跡情報を使用して、ローカル SQL Server Compact 3.5 テーブル内で挿入、更新、および削除されたレコードを検索し、それらの変更を SQL Server テーブルに反映します。

RDA_TRACKOPTION が TRACKINGON または TRACKINGON_INDEXES に設定されている場合は、次の制限が適用されます。

SELECT ステートメントから更新できないレコードセットが返された場合、エラーが発生します。

主キーは、SELECT ステートメントから返される更新可能なレコードセットに対して定義される必要があります。SELECT ステートメントでは、ビューまたはストアド プロシージャを参照できます。ただし、参照するビューまたはストアド プロシージャは、1 つのテーブルだけを参照していて、更新可能である必要があります。

TRACKINGON_INDEXES を指定した場合は、SQL Server テーブルに存在し、SQLSelectString で指定された列に関連するインデックスが、LocalTableName で指定された SQL Server Compact 3.5 ローカル テーブルに対して作成されます。

関連項目

その他の技術情報

RDA オブジェクトを使用してデータをプルする方法 (プログラム)