RDA の制限事項
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) のリモート データ アクセス (RDA) には、次の制限事項があります。
- 大文字と小文字の区別。SQL Server Compact Edition データベースでは、大文字と小文字は区別されません。
- ROWGUID。RDA を使用して SQL Server のテーブルからデータをプルする場合で、このテーブルがサーバーのレプリケーションにも関係している場合は、ROWGUIDCOL 属性が設定されているシステム列を除外する必要があります。既定では、この列の名前は RowGuid です。
たとえば、Pull メソッド内の SQLSelectString パラメータには、"SELECT * FROM Customers" ではなく、"SELECT CompanyName, ContactName FROM Customers" を使用します。 - トリガ。SQL Server Compact Edition では、トリガはサポートされません。ただし、RDA でデータをプルする SQL Server テーブルにトリガを設定することは可能です。監視対象テーブルの場合、変更内容を SQL Server にプッシュして戻すときに SQL Server トリガを実行できます。トリガ ロジックに SET NOCOUNT ON を指定することが必要な場合があります。これは変更された行の数を返さないことを示します。"変更された行がない" 場合の応答により、RDA の Push メソッドのエラーが発生するためです。
- テーブルおよび列。監視されているテーブルの場合、使用できる列の数は、1017 (1024 から 7 個のシステム列を引いた値) です。これら 7 個の列は保護されており、監視されている RDA テーブルに使用されます。
- 計算列。レコードセットに計算列が含まれていると、Pull メソッドは失敗します。
- IDENTITY 列。IDENTITY 列を使用して一意性を生成する場合、RDA では IDENTITY 列が動的に管理されません。デバイスの IDENTITY 列の既定の開始値は、常にシードが 1 で増分値が 1 です。SQL Server Compact Edition では、ALTER TABLE ステートメントを使用して、ローカル データベース テーブルで ID SEED および ID INCREMENT の値を変更できます。これにより、各デバイスの ID 範囲を手動で管理できます。IDENTITY の最大値を決定し、テーブルに何らかの挿入を実行する前に、シード値を調整する必要があります。たとえば、IDENTITY の最大値を 99 に設定した場合、"ALTER TABLE Orders ALTER COLUMN OrderId IDENTITY (100,1)" を使用して、次の IDENTITY 値を 100 に再設定します。
スキーマに関する制限事項
SQL Server Compact Edition では、結果の SQL Server Compact Edition テーブルへの変更を監視できます。SQL Server Compact Edition では、適切な監視オプションを指定することにより、ローカルの SQL Server Compact Edition テーブルに加えられたすべての挿入、更新、および削除が監視されます。このことにより、アプリケーションでは Push メソッドを呼び出し、これらの変更内容を元の SQL Server テーブルに反映し直すことができます。
RDA の監視設定付き Pull メソッドおよび Push メソッドでは、オプティミスティック同時実行制御が使用されます。SQL Server ではプルされたレコードのロックは維持されません。アプリケーションで Push が呼び出されると、ローカルの SQL Server Compact Edition データベースに加えられた変更内容が SQL Server データベースに無条件に適用されます。このため、他のユーザーによって SQL Server データベースに加えられた変更内容は失われることがあります。
監視設定付きの Pull メソッドと Push メソッドは、更新する予定のあるレコードが論理的に他から切り離されていて、競合の可能性がない場合に使用してください。たとえば、フィールド サービス アプリケーションを例に考えると、各フィールド エンジニアがサービス コールの一意のリストを持っている場合は、監視設定付き Pull メソッドと Push メソッドを使用できます。
監視設定付き Pull メソッドで作成された SQL Server Compact Edition テーブルには、次のスキーマ変更を行うことができます。
- ID 列のシード値または増分値の変更
- DEFAULT 制約の追加または削除
- 外部キーの追加または削除
- インデックスの追加または削除
- テーブルの削除
監視設定付き Pull メソッドの処理中は、SQL Server テーブルに対して次のスキーマ変更を行うことはできません。
- 列の追加、削除、または名前の変更
- テーブル名の変更
- 主キーの削除
- データ型定義の変更
SQL Server テーブルにこれらのスキーマ変更を行うには、SQL Server Compact Edition テーブルを削除し、変更後の SQL Server テーブルをもう一度プルする必要があります。