ワークグループまたはエンタープライズ ジオデータベースでは、複数のユーザーが同時に同じデータを参照/編集する場合があります。ArcMap などのアプリケーションでジオデータベースのデータを操作できるようにするには、アプリケーションがジオデータベースのコンテンツの操作中に、ジオデータベースのスキーマが固定され変更されないという原則に従って作業に当たる必要があります。たとえば、ジオデータベースのフィーチャクラスをマップに追加する際、ユーザー自身または他のユーザーによってそのスキーマが変更されることがあってはなりません。マップからフィーチャクラスを削除するかマップ ドキュメントを閉じたときに、そのフィーチャクラスを検索または編集しているユーザーが他にいない場合にのみ、スキーマを変更することができます。
スキーマ ロックの概要
ジオデータベースとそれらのデータセットが静的であることはまれです。ほとんどのデータセットは、常時、編集または更新されています。さまざまな理由で、新しいデータセットが追加され、既存のデータセットが削除されます。さらに、既存のデータセットのスキーマが変更され、属性列の追加、トポロジ ルールの変更、カートグラフィック リプレゼンテーションの追加などが行われます。
シングルユーザーのジオデータベースを操作している場合、これらの変更を加えるのは簡単であり、それが他のユーザーにどのような影響を与えるかについて考慮する必要はありません。これに対し、複数のユーザーによって使用されているジオデータベースに変更を加えたい場合は、スキーマを変更するためのワークフローを設定する必要があります。たとえば、他のユーザーに影響を与えずに変更を加えるために、他のユーザーがシステムを使用していない時間帯にスキーマの変更作業をスケジュールする必要があります。
ArcGIS では、ジオデータベースの変更管理に役立つように、自動化されたスキーマ ロック メカニズムを提供しています。作業計画を立てる際には、このロックメカニズムを考慮にいれた計画を検討する必要があります。
共有スキーマ ロック
ArcGIS では、ユーザーがフィーチャクラスまたはテーブルのコンテンツを編集または検索するなど、個々のデータセットが使用されるたびに、それらに共有ロックを自動的に適用します。このメカニズムは、データセットの使用中は、他のユーザーが元のデータセットやそのスキーマを変更できないようにするために使用されます。
単一のフィーチャクラスまたはテーブルに一度に設定できる共有ロックの数に制限はありません。ArcGIS を使用してジオデータベース スキーマを変更する際 (フィールドを追加する、ルールを変更するなど)、ArcGIS は変更対象のデータに排他ロックを設定しようとします。ただし、そのデータセットにすでに共有ロックが設定されている場合、排他ロックを設定することはできません。
排他スキーマ ロック
排他ロックは、データセットのスキーマを変更するなど、ジオデータベースのデータセットに必要な変更を加えるために、他のユーザーがそのデータセットを使用できないようにロックするために使用されます。適切な権限を持つユーザーがジオデータベースのデータセットに対して変更を開始すると、ArcGIS は、個々の属性テーブル、フィーチャクラス テーブル、ラスター テーブル、またはその他のデータセットに排他ロックを自動的に設定します。
ジオデータベースのスキーマを変更する場合、そのデータセットが他のユーザーによって使用されていない必要があります。つまり、すでに共有ロックが設定されているデータセットは変更できません。
パーソナル ジオデータベースでのロック
パーソナル ジオデータベースでは、すべてのロックがジオデータベース全体のすべてのコンテンツに適用されます。パーソナル ジオデータベースのアイテムに排他ロックまたは共有ロックが設定されると、そのロックはジオデータベース全体に適用されます。これは、パーソナル ジオデータベースを編集できるユーザーが常に 1 人だけであることを意味します。
パーソナル ジオデータベースが格納された Microsoft Access データベース ファイル (.mdb) への読み取り/書き込みアクセスが可能なユーザーは、そのスキーマ コンテンツを編集して変更することができます。
ネットワーク ドライブ上にまたは UNC パスを介して格納されたパーソナル ジオデータベースにアクセスするときは、パーソナル ジオデータベースの格納フォルダーに対する書き込み権限またはそれ以上の権限をすべてのユーザーが持っていることを確認してください。書き込み権限を持たないユーザーが 1 人でもいた場合、1 人のユーザーしかパーソナル ジオデータベースを開けません。以降にパーソナル ジオデータベースを開こうとするとスキーマ ロック エラーが発生します。原因は、Microsoft Jet Database Engine が、*.mdb ファイルへのアクセスを制御する *.ldb ファイルを開いて修正できないためです。
ファイル ジオデータベースでのロック
ファイル ジオデータベースのスキーマを変更するには、ファイル ジオデータベース フォルダーへの読み取り/書き込み権限が必要です。
スキーマ ロック (共有および排他) は、次に示すように、ファイル ジオデータベースのデータセットと関連テーブルに個別に適用されます。たとえば、次のような場合です。
- フィーチャ データセット内のフィーチャクラスのロックを取得した場合、そのロックはフィーチャ データセットとその内容全体に適用されます。
- ロックはリレーションシップ クラスの関連元と関連先の両方に適用されます。たとえば、2 つのスタンドアロン フィーチャクラスがリレーションシップ クラスで関連付けられていて、どちらか一方の排他ロックまたは共有ロックを取得した場合、ロックはもう一方のフィーチャクラスにも適用されます。
ワークグループまたはエンタープライズ ジオデータベースでのロック
ユーザーがデータセットのスキーマを変更し、他のユーザーのデータを編集する適切な権限を持つためには、そのデータセットを所有している必要があります。
スキーマ ロック (共有および排他) は、データセットと関連テーブルに個別に適用されます。たとえば、次のような場合です。
- フィーチャ データセット内のフィーチャクラスのロックを取得した場合、そのロックはフィーチャ データセットとその内容全体に適用されます。
- ロックはリレーションシップ クラスの関連元と関連先の両方に適用されます。たとえば、2 つのスタンドアロン フィーチャクラスがリレーションシップ クラスで関連付けられていて、どちらか一方の排他ロックまたは共有ロックを取得した場合、ロックはもう一方のフィーチャクラスにも適用されます。