次の方法で共有


マルチユーザー アクセスと同期

Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5) ではマルチユーザー アクセスがサポートされるので、データベースのレプリケート中でもユーザーはデータベースを使用できます。これにより、パブリッシャで行われた変更との競合が発生することがあります。この競合はローカル データの競合と呼ばれ、SQL Server Compact 3.5 を使用するアプリケーションを開発する際に考慮する必要があります。また、一部の 64 ビット プラットフォームの環境では、以前のバージョンの SQL Server Compact を使用したデータベース ファイルへの同時アクセスがサポートされません。64 ビット コンポーネントの詳細については、「64 ビット データベース アプリケーションの管理」を参照してください。

マルチユーザー アクセスの影響

SQL Server Compact 3.5 を使用するアプリケーションを設計する際は、マルチユーザー アクセスがデータベースに及ぼす影響について考慮する必要があります。次の表では、SQL Server Compact 3.5 に組み込まれているいくつかの一般的な機能と、各機能に関連する問題点を示します。

機能 問題点

ロック

同期中、パブリッシャで行われた変更は、データ ロックによりサブスクライバ データベースに適用されません。サブスクライバでデータ変更が行われ、データが長時間ロックされている場合は、同期が失敗します。

この問題を完全に回避するには、ユーザーが同期中にデータを変更できないようにするロジックをアプリケーションに追加します。

検証

検証を使用している場合、SQL Server Compact 3.5 データベースの行数が同期中に変更されると、検証が失敗します。

この問題を完全に回避するには、検証を伴う同期中にユーザーがデータを変更できないようにするロジックをアプリケーションに追加します。

再初期化

サブスクリプションの再初期化中、レプリケーション層では、レプリケートされたすべてのユーザーとシステム テーブルが削除され、再作成されます。SQL Server サブスクリプションの場合と同様に、同期の開始後に行われたすべての変更は、再初期化すると失われます。

このデータの損失を回避するには、再初期化中にユーザーがデータを変更できないようにするロジックをアプリケーションに追加します。

スキーマ変更

すべての DDL 操作 (スキーマ変更) で、テーブルに排他アクセスできる必要があります。テーブルが他のプロセスで使用されている場合は、スキーマを変更できません。

同期中の変更

同期中にデータを変更した場合、その変更が次の同期中に送信されます。同期セッションによってローカル競合が発生した場合、行は、アーティクルが列レベルで追跡される場合でも、行レベルとして解決されます。

競合の検出と解決

マルチユーザー環境で作業しているとき、同期中の変更によって競合が発生することがあります。SQL Server Compact 3.5 でクライアント側の競合は検出されますが、解決されません。この場合、次の同期中に競合を解決するために、競合情報がパブリッシャに渡されます。

大部分の競合は、次の同期中にパブリッシャで解決されます。ただし、参照整合性 (R/I) 競合が発生した場合は、パブリッシャから、デバイスでの自動再同期が要求されます。この現象が発生した場合、再同期は 2 回しか行われません。

競合の検出と解決の詳細については、「レプリケーション競合の検出と解決」を参照してください。

SubscriberConflicts プロパティの使用

同期中にローカル データベースに対して行われた変更により、ローカル競合が発生します。パブリッシャからの行をサブスクライバ側で適用できない場合、サブスクライバで競合が発生したと見なされ、SubscriberConflicts プロパティが設定されます。SQL Server サブスクライバの場合、競合はサブスクライバ側で解決されます。ただし、SQL Server Compact 3.5 には調整エージェントがないため、すべての競合をパブリッシャで解決する必要があります。アプリケーションを開発する際は、同期のたびに SubscriberConflicts プロパティを確認するようアプリケーションを設計することができます。このプロパティが 0 以外の値に設定されている場合は、パブリッシャで競合が解決されるように、データを再同期化する必要があります。

参照

概念

データの同期 (SQL Server Compact)
同期方式によるデータ同期
非同期方式によるデータ同期
レプリケーション競合の検出と解決

ヘルプおよび情報

サポートについて (SQL Server Compact 3.5 Service Pack 1)