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 列はジオデータベースでは完全にサポートされません。したがって、次の点に注意してください。

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 を使用して、これらのテーブルを変更しないでください。

SDE_xml_columns

ビジネス テーブルに 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

SDE_xml_indexes

このテーブルは各 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 インデックスを説明するテキスト。

インデックスの作成にインデックス定義ファイルが使用された場合、インデックスの説明がファイルの先頭に指定されていることがあります。

SDE_xml_index_tags

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>

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>

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 列が含まれているテーブルとそれを追跡するためのシステム テーブルの図を示します。破線はテーブル間の暗黙的なリレーションシップを示し、実線は明示的に定義されたリレーションシップを示しています。

SQL Server のビジネス テーブルと XML 列の追跡に使用されるシステム テーブル

XML ドキュメントの XML 列

XML 列が含まれているテーブルを XML ワークスペース ドキュメントにエクスポートすることはできません。XML レコードセット ドキュメントにエクスポートすることは可能ですが、列を XML として見分ける方法はありません。

関連トピック

5/10/2014