スキーマとは、データベースまたはフィーチャクラスやテーブルなどのデータ オブジェクトの構造や設計です。スキーマ ロックとは、別のアプリケーションがデータベースにアクセスしており、フィールドを追加または削除してその構造を変更することができない状態のことです。スキーマ ロックの最もよくある原因は、ArcMap でのデータセットの表示です。
他のアプリケーションから同時にアクセスされる可能性のあるデータを使用する場合のジオプロセシング ツールとスクリプトの振舞いは、次の 4 つのルールにまとめることができます。
- 出力ワークスペースがスキーマ ロックになっていても、ツールは常に出力ワークスペースでデータを新規作成できます。この例として、ArcCatalog がフィーチャ データセットにアクセスしている間に、ArcCatalog で [フィーチャクラスの作成 (Create Feature Class)] ツールを使用してフィーチャ データセット内にフィーチャクラスを作成する場合が挙げられます。
- データセットのスキーマを更新するツールは、常に、データセットにアクセス中の他の ArcGIS アプリケーションが適用するロックを優先します。たとえば、1 つの ArcMap セッションで道路フィーチャクラスが表示されている場合、[フィールドの追加 (Add Field)]ツールは、この道路フィーチャクラスを入力として使用中の他の ArcMap セッションから実行された場合、実行に失敗します。このツールの失敗を受けて、データにアクセス中の他のユーザーがいることを示すエラー メッセージが表示されます。
- スクリプトは、同一スクリプト内でツールによって作成されたデータのスキーマをいつでも更新できます。これは、現在のワークスペースが他のアプリケーションによって使用中の場合であっても可能です。たとえば、スクリプト ツールは、パーソナル ジオデータベースが ArcMap などの呼び出し元のアプリケーションによってアクセス中であっても、そのフィーチャクラスを作成できます。一般的に、パーソナル ジオデータベースの場合、開いた後は、他のプロセスによるデータセットのスキーマ変更が許容されませんが、スクリプト ツールは、作成したばかりのフィーチャクラスについてスキーマを変更できます。
- スクリプトとスクリプト ツールはどちらも、他のアプリケーションやスクリプトがアクセス中のデータのスキーマを変更できません。これには、ArcMap などのアプリケーションからスクリプト ツールに渡されるデータも含まれます。つまり、スクリプト ツールは、パラメーターとして渡されたレイヤーについてフィールドの追加や削除ができません。