SQL Server に格納されたジオデータベースの XML 列
XML はドキュメント内のデータ エレメントを定義するためのオープン規格です。XML データを Microsoft SQL Server データベースに格納するには、ネイティブ XML 列または ArcSDE XML 列を使用できます。
どちらのタイプの XML でも、ユーザ定義の XML ドキュメントを格納できます。XML_COLUMN_STORAGE DBTUNE パラメータは、使用する XML のタイプを制御します。デフォルトでは、このパラメータは DB_XML に設定されます。したがって、デフォルトでは、ネイティブ SQL Server XML データ タイプが使用されます。
ネイティブ SQL Server XML 列に XPath クエリを使用することを考えている場合は、フルテキスト カタログも作成する必要があります。詳細については、DBMS のドキュメントをご参照ください。
ArcSDE XML データ タイプは、SQL Server データベースでのフルテキスト検索の有効化と、フルテキスト カタログの作成を必要としています。作成の詳細については、「ArcSDE XML 列を格納するための SQL Server の準備」と「SQL Serverでのフルテキスト カタログの作成」をご参照ください。
ArcGIS for Desktop の XML 列
XML 列はジオデータベースでは完全にサポートされません。したがって、次の点に注意してください。
- ArcCatalog で、テーブル内の XML 列のコンテンツをプレビューできません。XML 列は空になるか、文字化けした状態となります。
- [テーブル プロパティ] ダイアログ ボックスの [フィールド] タブでは、XML 列のデータ タイプは表示されません。
- XML 列が含まれているテーブルをジオデータベース間でコピーして貼り付けることはできません。
- ジオプロセシング ツールを使ってテーブルをインポートまたはエクスポートする場合は、XML 列を除外する必要があります。
- XML 列を含むテーブルを、ArcCatalog を使用して、バージョン対応テーブルとして登録することはできません。
- XML 列を含むテーブルを ArcMap で開いた場合、XML 列は空になります。
- XML 列を含むテーブルを ArcMap で編集するには、バージョン非対応の編集セッションを使用します。ただし、編集できるのはテーブルの他のフィールドだけであり、XML 列自体は編集できません。
SQL Server DBMS での ArcSDE XML 列
XML 列を管理するために、SDE_xml columns、SDE_xml_index_tags、SDE_xml_indexes の 3 つの ArcSDE システム テーブルが使用されます。これらのテーブルの所有者は、ArcSDE 管理者ユーザです。ArcSDE は、XML 列ごとに追加のテーブルを 2 つ作成します(SDE_xml_document テーブルと SDE_xml_xpath_index テーブル)。これらのテーブルの所有者は、XML 列が含まれたビジネス テーブルを所有しているユーザです。
ArcSDE は次のテーブルを作成します。これらは XML ドキュメントの格納とインデックスの作成に使用されます。
SQL を使用して、これらのテーブルを変更しないでください。
ビジネス テーブルに XML 列を追加すると、XML_COLUMN テーブルに行が 1 つ追加されます。このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
column_id |
int |
XML 列の ID およびテーブルの主キー この値は XML 列の作成時に ArcSDE によって割り当てられます。 |
NOT NULL |
registration_id |
int |
XML 列が含まれているビジネス テーブルの ID。SDE_table_registry システム テーブルへの外部キー |
NOT NULL |
column_name |
nvarchar(32) |
ビジネス テーブルの XML 列の名前。 |
NOT NULL |
index_id |
int |
XML 列が存在する場合は、関連付けられている XPath インデックスの ID。SDE_xml_indexes テーブルへの外部キー |
|
minimum_id |
int |
個々の XML ドキュメントを識別するためにビジネス テーブルの XML 列で使用される初期値の値 |
|
config_keyword |
nvarchar(32) |
それらのテーブルで作成される XML ドキュメント、XML XPath インデックス テーブル、テキスト インデックスがデータベースで定義される方法を決定するパラメータが含まれた DBTUNE コンフィグレーション キーワード。 詳細については、SQL Server における ArcSDE XML のパラメータをご参照ください。 |
|
xflags |
int |
XML ドキュメント テーブルの元のドキュメントが圧縮されているかどうかを示す値。 デフォルトでは、ドキュメントは圧縮されます(圧縮されたドキュメントのほうがパフォーマンスが向上します)。 |
NOT NULL |
このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。このテーブルには、XPath インデックスが付いている XML 列ごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
index_id |
int |
XPath インデックスの ID およびテーブルの主キー |
NOT NULL |
index_name |
nvarchar(32) |
XPath インデックスの名前。 |
NOT NULL |
所有者 |
nvarchar(32) |
XML 列を所有しているデータベース ユーザ |
NOT NULL |
index_type |
int |
XPath インデックスのタイプを示す値。 ArcSDE 9.1 以降では、この値は SE_XML_INDEX_DEFINITION インデックス タイプで 2、SE_XML_INDEX_TEMPLATE インデックス タイプで 1 です。 |
NOT NULL |
description |
nvarchar(64) |
XPath インデックスを説明するテキスト。 インデックスの作成にインデックス定義ファイルが使用された場合、インデックスの説明がファイルの先頭に指定されていることがあります。 |
XML ドキュメントには必要に応じて XPath インデックスが含まれます。このインデックスにより、ユーザが各ドキュメントで特定の XML エレメントまたは属性の内容を検索できるようになります。エレメントや属性が各 XPath インデックスに含まれるかどうかの定義は、このテーブルに記録されます。
このテーブルは各 ArcSDE ジオデータベースに 1 つ存在します。このテーブルには XML 列の XPath インデックスに関連付けられた XPath ごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
index_id |
int |
XML 列が存在する場合は、関連付けられている XPath インデックスの ID。SDE_xml_indexes テーブルへの外部キー。 |
NOT NULL |
tag_id |
int |
XPath(タグ)の ID。 |
NOT NULL |
tag_name |
nvarchar(1024) |
XML ドキュメントに存在する XML エレメントまたは属性を識別する絶対 XPath。 /metadata/mdDateSt は XML エレメントを識別し、/metadata/dataIdInfo/tpCat/TopicCatCd/@value は XML 属性を識別します。これらの XPath には、XML エレメントまたは属性のグループを参照するアスタリスク(*)が含まれていてはいけません。各エレメントまたは属性は、このテーブルに指定された XPath に基づいて正確に照合されます。有効な XML ドキュメントのエレメントに「*」という名前を付けることはできません。 |
NOT NULL |
data_type |
int |
XML エレメントまたは属性が数値、可変長の文字、テキストとしてインデックス付けされるかどうかを示す値 1 はタグの内容がテキストとしてインデックス付けされることを示し、2 はタグの内容が数値としてインデックス付けされることを示し、3 はタグの内容が可変長の文字としてインデックス付けされることを示します。 |
NOT NULL |
tag_alias |
int |
XPath を識別するために使用されるコード。 たとえば、Z39.50 通信プロトコルは数値コードを使用して検索可能なコンテンツを示します。 |
|
description |
nvarchar(64) |
XML エレメントまたは属性に含まれるべき内容を示すテキスト。 |
|
is_excluded |
int |
XML エレメントが XPath インデックスに含まれるかどうかを示す値。 0 = XPath は含まれます; 1 = XPath は含まれません。 |
NOT NULL |
SDE_xml_doc<column_id> テーブルは、XML ドキュメントを格納し、ドキュメントのコンテンツに関するフルテキスト インデックスを管理します。ArcSDE データベースには、XML 列ごとにこれらのテーブルが 1 つ含まれます。テーブル名の番号は、XML 列の ID です。このテーブルには、XML 列に格納される XML ドキュメントごとに行が 1 つ含まれます。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
sde_xml_id |
int |
XML 列に格納される XML ドキュメントの ID。テーブルの主キー |
NOT NULL |
doc_property |
int |
XML ドキュメントのコンテンツを XPath インデックスに追加したときに競合が検出されたかどうかを示す値。 1 = 競合が検出されました。たとえば、数値でインデックス付けされるはずのエレメントが、ドキュメントに文字列で含まれているなど。NULL値 = ドキュメントのインデックスの作成時に問題は検出されませんでした。 |
NOT NULL |
xml_doc |
varbinarymax |
XML ドキュメント。 |
NOT NULL |
xml_doc_val |
varbinarymax |
すべての XML タグと他のマークアップが削除された状態の XML ドキュメント全体のコンテンツ。 この列にはテキスト インデックスがデフォルトで構築されます。このインデックスはフルテキスト検索への応答に使用されます。 |
NOT NULL |
sde_time_stamp |
timestamp |
テキスト インデックスの増分更新をサポートするために使用されます。 |
NOT NULL |
SDE_xml_idx<column_id> テーブルは、XPath テキスト インデックスを持つ XML 列に対して作成されます。このテーブルには、インデックスが作成されている XPath ごとにテキストまたは数値のコンテンツが格納されます。
テーブル名の ID 番号は、XML 列の内部登録番号です。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
xml_key_column |
int |
インデックス付けされた値の ID。テーブルの主キー。 |
NOT NULL |
sde_xml_id |
int |
インデックス付けされた値が含まれている XML ドキュメントの ID。 |
NOT NULL |
tag_id |
int |
XML 列の XPath インデックスに関連付けられたタグの ID。ドキュメントのどこに値が格納されているかを識別します。 |
NOT NULL |
double_tag |
float |
XPath インデックス定義においてタグが DOUBLE として定義されている場合のインデックス付けされた値。 |
|
string_tag |
nvarchar(256) |
XPath インデックス定義においてタグが VARCHAR として定義されている場合のインデックス付けされた値。 |
|
text_tag |
ntext |
XPath インデックス定義においてタグが STRING として定義されている場合のインデックス付けされた値。 |
|
sde_time_stamp |
timestamp |
テキスト インデックスの増分更新をサポートするために使用されます。 |
NOT NULL |
次に、XML 列が含まれているテーブルとそれを追跡するためのシステム テーブルの図を示します。破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。
XML ドキュメントの XML 列
XML 列が含まれているテーブルを XML ワークスペース ドキュメントにエクスポートすることはできません。XML レコードセット ドキュメントにエクスポートすることは可能ですが、列を XML として見分ける方法はありません。