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

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

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

  • データをプルする際のプル元のテーブル
  • Web サーバーに接続するために必要な Web サーバー認証
  • 使用されている SQL Server 認証
  • クライアントにコピーおよび反映されるテーブル
  • 監視テーブルやエラー テーブルなどの、プルのオプション

監視

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

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

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

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

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

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

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

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

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

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

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

参照

処理手順

データをプルする方法 (プログラム)

ヘルプおよび情報

SQL Server Compact Edition のサポートについて