SQL Server に格納されたジオデータベースのキーセット テーブル
キーセット テーブルは ArcGIS for Desktop クライアントが整数、番号、日付、文字列タイプの属性を使用してテーブルを結合するジオデータベース リレーションシップ クエリを実行するときに、選択された行のリストを保持するために使用されます。
「SQL Server 用 ArcSDE ログ ファイル設定オプション」で説明しているように、ログ ファイル テーブルには選択フィーチャの ObjectID が格納されます。キーセット テーブルは、ObjectID 以外の属性による結合に対応するために使用されます。
キーセット テーブルはデータベース クエリのソース選択セットの行の数が 99 を超えるセッション(接続)ごとに 1 つ作成されます。
ArcGIS for Desktop のキーセット テーブル
ArcGIS for Desktop ではキーセット テーブルを確認することはできません。ただし、キーセット テーブルを作成し、データを設定することは可能です。そのためには、ArcMap のリレーションシップ クラスに関与するフィーチャクラスで 99 個を超えるレコードを選択した後、属性テーブルを開き、[オプション] メニューから関連テーブル リストを使用して関連テーブルを取得します。また、編集セッションの開始時にもキーセット テーブルが作成されます。
Microsoft SQL Server データベースに格納されたキーセット テーブル
キーセット テーブルは、次のどちらかの状態になるまでジオデータベースに作成されません。
- ArcGIS for Desktop を通じて選択が実行される。
- 編集セッションが開始される。
どちらかの状態が発生した場合、キーセット テーブルはグローバル一時テーブルとして作成されます。1 つめのケースでは、キーセット テーブルが作成され、レコードが追加されます。2 つめのケースでは、キーセット テーブルは作成されるだけで、条件を満たす選択セットが作成されるまで空のままになります。
キーセット テーブルの名前には、キーセット テーブルの作成につながる操作を行ったユーザのスキーマの名前と、ユーザ セッションのプロセス ID 番号が含まれています。形式は次のとおりです。
<user_schema>.##keyset_<process_id>_sde
キーセット テーブルは選択セットのキーセット ID 番号とフィーチャクラス間のリレーションシップのベースとなるフィールドの値を格納します。
キーセット テーブルは、一時テーブルなので、ユーザがデータベースへの接続を終了したときに削除されます。
次に、LATERALS テーブルと CONTRACTORS テーブル間で選択を行うためのキーセット テーブルを示します。この場合、LONG_VAL フィールドには、LATERALS テーブルと CONTRACTORS テーブルのリレーションシップ クラスのベースとなる CONTRACTOR_ID フィールドの値が含まれます。
<user_schema>.##keyset_<process_id>_sde
次に、SQL Server のキーセット テーブルの定義を示します。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
KEYSET_ID |
integer |
キーセット選択の ID。 |
NOT NULL |
LONG_VAL |
integer |
リレーションシップ クラスのベースとなるフィールドが数値フィールドの場合、そのフィールドの値。 |
|
STR_VAL |
nvarchar(256) |
リレーションシップ クラスのベースとなるフィールドが文字列フィールドの場合、そのフィールドの値。 |
|
DBL_VAL |
float |
リレーションシップ クラスのベースとなるフィールドが倍精度数値フィールドの場合、そのフィールドの値。 |
|
DATE_VAL |
datetime datetime2 |
リレーションシップ クラスのベースとなるフィールドが日付フィールドの場合、そのフィールドの値。 |
XMLドキュメントのキーセット テーブル
キーセット テーブルは一時的なテーブルのため、XML ドキュメントに格納することはできません。