エンタープライズ ジオデータベース データへの SQL によるアクセス
データベース管理システムのネイティブ SQL を使用して、エンタープライズ ジオデータベース内のテーブルおよびフィーチャクラス(まとめて、「データセット」と呼びます)からデータを読み取ることができます。また、SQL を使用して、エンタープライズ ジオデータベースに格納されているシンプルなデータセットに対して、挿入、削除、および値の更新を実行することもできます。
エンタープライズ ジオデータベースに格納されたデータセットのスキーマは、SQL を使用して変更しないでください。
ジオデータベース データセットに対して SQL を実行する場合は、ベース(またはビジネス)テーブル内のデータに対してクエリを実行します。クエリ対象のデータセットが次の条件を満たす場合は、ベース テーブルに対するクエリでデータを表示することができ、SQL を使用してベース テーブルに対してデータの更新、レコードの挿入、またはレコードの削除を実行できます。
- データがジオデータベースの機能(アノテーション、レプリケーション、ネットワーク、パーセル ファブリック、リレーションシップ クラス、スケマティック データセット、サブタイプ、ドメイン、テレイン、トポロジなど)に参加していないこと。
- データセットがバージョン対応登録されていないこと。
- データセットで履歴管理が有効でないこと。
- データセットに、バイナリ ジオメトリ データ タイプまたは ArcSDE XML データ タイプの列が含まれていないこと。
次のセクションでは、データセットがこれらの条件を満たしていない場合の対応について説明します。
データセットがジオデータベース機能に参加している場合
アクセス対象のデータがジオデータベースの機能に参加している場合は、必要な関連テーブルを含むようクエリを構築し、正しい列を使ってそれらのテーブルを結合して関連テーブル内の情報を表示する必要があります。
データセットがジオデータベースの機能を使用しているかどうかは、Is_Simple 関数を使用して判断できます。Is_Simple が False を返した場合は、データセットに対して SQL SELECT ステートメントを実行できますが、SQL を使用してデータセットを編集しないでください。
データセットがバージョン対応登録されている場合
データセットがバージョン対応登録されている場合は、バージョン対応ビューを使用してクエリを実行すると、複雑な結合ステートメントを記述しなくても、ベース テーブル、ADD テーブル、および DELETE テーブル内のデータを表示することができます。ArcGIS 10.1 以降のリリースでは、データセットをバージョン対応登録したときにバージョン対応ビューが作成されます。ArcGIS 10.1 より前のリリースでバージョン対応登録されたデータセットの場合、またはデータセットをバージョン対応登録したときにビューを作成する権限を持っていなかった場合は、ArcGIS for Desktop のテーブルまたはフィーチャクラスのショートカット メニューから、SQL アクセスに対してバージョン対応ビューを有効にすることができ、この方法でバージョン対応ビューを作成できます。
SQL を使用してバージョン対応登録されたデータセットを編集する場合は、バージョン対応ビューを使用して編集する必要があります。これにより、編集が ADD テーブルと DELETE テーブルに書き込まれ、レコードを挿入したときに ObjectID フィールドが設定されます。
データセットがバージョン対応登録されているかどうかは、Is_Versioned 関数を使用して判断できます。データセットがバージョン対応登録されている場合は、Version_View_Name 関数を使用してバージョン対応ビューの名前を確認します。
データセットがバージョン対応登録されていないが、履歴管理が有効である場合
データセットがバージョン対応登録されていないが、履歴管理が有効である場合は、履歴管理を有効にするときに履歴管理ビューが作成されます。
SQL を使用して履歴管理が有効なバージョン非対応のデータセットを編集する場合は、履歴管理ビューを使用して編集する必要があります。これにより、フィーチャまたはレコードがいつ更新されたかを追跡するフィールドと ObjectID フィールドが自動的に更新されます。
履歴管理を有効にしたときにビューを作成する権限がなかった場合は、データベースにビューを作成する権限が付与された後に、ArcGIS for Desktop のテーブルまたはフィーチャクラスのショートカット メニューから SQL アクセスを有効にすることができ、この方法で履歴管理ビューを作成することができます。
Is_Versioned 関数が False を返した場合は、Is_Archive_Enabled 関数を使用して、バージョン非対応データセットで履歴管理が有効であるかどうかを判断します。履歴管理が有効な場合は、Archive_View_Name 関数を使用して履歴管理ビューの名前を取得します。この名前を使用して、SQL を使用したデータセットの編集を実行できます。
データセットにバイナリ ジオメトリまたは ArcSDE XML 列が含まれている場合
アクセス対象データがバイナリ ジオメトリ格納または ArcSDE XML を使用している場合は、必要な関連テーブルを含むようクエリを構築し、正しい列を使ってそれらのテーブルを結合して関連テーブル内の情報を表示する必要があります。
バイナリ ジオメトリ格納または ArcSDE XML データ タイプの列を含むデータセットは、SQL を使用して編集しないでください。