Столбцы XML в базе геоданных в SQL Server
XML - это открытый стандарт определения элементов данных в документах. Для хранения данных XML в базе данных Microsoft SQL Server можно использовать собственные столбцы XML или ArcSDE XML.
Пользовательские XML-документы можно хранить в любом типе XML. Параметр XML_COLUMN_STORAGE DBTUNE управляет типом XML, который используется. По умолчанию значением параметра является DB_XML. Поэтому, по умолчанию используется собственный тип данных XML SQL Server.

Если вы намереваетесь использовать запросы XPath в собственных столбцах XML SQL Server, вам необходимо создать также полнотекстовые каталоги. Более подробную информацию можно найти в документации SQL Server.
Для типов данных XML ArcSDE необходимо, чтобы база данных SQL Server поддерживала полнотекстовый поиск и содержала полнотекстовый каталог. Информацию о том, как это сделать, можно найти в Подготовка SQL Server к хранению столбцов XML ArcSDE и Cоздание полнотекстового каталога в SQL Server.
XML-столбцы в ArcGIS for Desktop
В базы геоданных XML-столбцы поддерживаются не полностью. Поэтому верно следующее:
- Вы не можете выполнять просмотр содержимого XML-столбца таблицы в ArcCatalog. Столбец будет пустым или будет содержать нечитаемые символы.
- В закладке Поля (Fields) диалогового окна Свойства (Properties) для XML-столбца тип данных не отображается.
- Вы не можете копировать и вставить таблицу, содержащую XML-столбец из одной базы геоданных в другую.
- Если вы импортируете или экспортируете таблицу с использованием инструментов геообработки, то XML-столбец необходимо исключить.
- Вы не можете зарегистрировать таблицу с XML-столбцом как версионную с использованием ArcCatalog.
- Если вы откроете таблицу, содержащую XML-столбец в ArcMap, то он будет пустым.
- Для редактирования таблицы с XML-столбцом в ArcMap вы можете использовать неверсионный сеанс редактирования. Однако вы не можете редактировать сам XML-столбец, только другие поля таблицы.
Столбцы XML ArcSDE в СУБД SQL Server
Для хранения столбцов XML используются три системные таблицы ArcSDE: SDE_xml columns, SDE_xml_index_tags и SDE_xml_indexes. Эти таблицы принадлежат пользователю - администратору ArcSDE ArcSDE создает также для каждого столбца XML две дополнительные таблицы, используемые для хранения и индексирования XML-документов: таблицы SDE_xml_document и SDE_xml_xpath_index. Эти таблицы принадлежат пользователю - владельцу бизнес-таблицы, содержащей столбец XML.
ArcSDE создает следующие таблицы, используемые для хранения и индексирования XML-документов.

Не изменяйте ни одну из указанных таблиц с использованием SQL.
При добавлении столбца XML в бизнес-таблицу, в таблице столбцов XML появляется новая строка. Эта таблица есть в каждой базе данных ArcSDE.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
column_id |
int |
Идентификатор столбца XML и первичный ключ таблицы ArcSDE присваивает его в момент создания столбца XML. |
NOT NULL |
registration_id |
int |
Идентификатор бизнес-таблицы, содержащей столбец XML и внешний ключ системной таблицы SDE_table_registry |
NOT NULL |
column_name |
nvarchar(32) |
Имя столбца, являющегося столбцом XML в бизнес-таблице |
NOT NULL |
index_id |
int |
Идентификатор индекса XPath, связанного со столбцом XML (если существует) и внешним ключом таблицы SDE_xml_indexes |
|
minimum_id |
int |
Начальное значение идентификационного номера отдельных XML-документов в столбце XML бизнес-таблицы |
|
config_keyword |
nvarchar(32) |
Ключевое слово конфигурации DBTUNE, параметры которого определяют описание в базе данных XML-документа, таблиц индексов XML XPath и текстовых индексов, созданных в этих таблицах. Более подробную информацию можно найти в Параметры XML ArcSDE в SQL Server. |
|
xflags |
int |
Значение, показывающее, хранятся ли документы в таблицах документов XML в сжатом или в несжатом виде По умолчанию, документы хранятся в сжатом виде, поскольку это повышает производительность. |
NOT NULL |
Эта таблица есть в каждой базе данных ArcSDE. Она содержит строку для каждого столбца XML, имеющего индекс XPath.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
index_id |
int |
Идентификатор индекса XPath и первичный ключ таблицы |
NOT NULL |
index_name |
nvarchar(32) |
Имя индекса XPath |
NOT NULL |
владелец |
nvarchar(32) |
Пользователь базы данных, которому принадлежит столбец XML |
NOT NULL |
index_type |
int |
Значение, указывающее тип индекса XPath Начиная с версии ArcSDE 9.1, значение 2 обозначает тип индекса SE_XML_INDEX_DEFINITION, а 1 - тип индекса SE_XML_INDEX_TEMPLATE. |
NOT NULL |
описание |
nvarchar(64) |
Текст, определяющий индекс XPath Если для создания индекса использовался файл определения индекса, описание индекса может привести вверху этого файла. |
Столбец XML может дополнительно иметь индекс XPath, который позволяет выполнять поиск по содержимому определенного элемента XML или по атрибуту в каждом документе. В этой таблице записано, какие элементы и атрибуты включаются или исключаются из каждого индекса XPath
Эта таблица есть в каждой базе данных ArcSDE. Она содержит строку для каждого XPath, связанного с индексом XPath столбца XML.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
index_id |
int |
Идентификатор индекса XPath, связанного со столбцом XML (если существует) и внешним ключом таблицы SDE_xml_indexes |
NOT NULL |
tag_id |
int |
Идентификатор XPath или тега |
NOT NULL |
tag_name |
nvarchar(1024) |
Абсолютный XPath, идентифицирующий элемент или атрибут XML, который может находится в XML-документе Например, /metadata/mdDateSt обозначает элемент XML, а /metadata/dataIdInfo/tpCat/TopicCatCd/@value обозначает атрибут XML. Пути XPath не должны содержать знак звездочки (*) для ссылки на группу XML элементов или атрибутов - каждый элемент или атрибут должен указываться точно, в соответствии с XPath, заданным в этой таблице. В корректном XML-документе для имен элементов нельзя использовать знак звездочки (*). |
NOT NULL |
Тип данных (data_type) |
int |
Значение, указывающее, будет ли индексирован элемент или атрибут XML как число, строка переменной длины (varchar) или текст 1 - содержание тега будет индексировано как текст; 2 - содержание тега будет индексировано как число; 3 - содержание тега будет индексировано как строка переменной длины (varchar). |
NOT NULL |
tag_alias |
int |
Число, которое можно использовать для идентификации XPath Например, протокол связи Z39.50 использует числовые коды для ссылки на содержимое, по которому может выполняться поиск. |
|
описание |
nvarchar(64) |
Текст, определяющий содержание элемента или атрибута XML |
|
is_excluded |
int |
Значение, показывающее, входит или нет элемент XML в индекс XPath 0 = входит; 1 = не входит. |
NOT NULL |
В таблице SDE_xml_doc<column_id> хранится XML-документ и поддерживается полнотекстовый индекс его содержимого. База данных ArcSDE содержит одну из этих таблиц для каждого столбца XML. Число в имени таблицы является идентификатором столбца XML. Эта таблица содержит одну строку для каждого XML-документа, хранящегося в столбце XML.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
sde_xml_id |
int |
Идентификатор XML-документа, хранящегося в столбце XML, и первичный ключ для таблицы. |
NOT NULL |
doc_property |
int |
Значение, указывающее, были ли обнаружены конфликты при добавлении содержимого XML-документа в индекс XPath 1 = Обнаружен конфликт; например, когда предполагается, что элемент документа должен иметь числовой индекс, но вместо этого в нем содержится строка. Значение NULL = Документ проиндексирован успешно. |
NOT NULL |
xml_doc |
varbinarymax |
XML-документ |
NOT NULL |
xml_doc_val |
varbinarymax |
Cодержимое XML-документа, включая все XML-теги и другую разметку, полностью удалено Текстовой индекс этого столбца создается по умолчанию; этот индекс используется для ответа на полнотекстовые запросы. |
NOT NULL |
sde_time_stamp |
timestamp |
Используется для пошаговых обновлений текстового индекса |
NOT NULL |
Таблица SDE_xml_idx<column_id> создается для столбцов XML, имеющих текстовый индекс XPath. В этой таблице хранится текстовое или числовое содержание каждого проиндексированного XPath.
Идентификационный номер в имени таблицы является внутренним регистрационным номером столбца XML.
Имя поля |
Тип поля |
Описание |
Null? |
---|---|---|---|
xml_key_column |
int |
Идентификатор индексированного значения и первичный ключ таблицы |
NOT NULL |
sde_xml_id |
int |
Идентификатор XML-документа, который содержит индексированное значение |
NOT NULL |
tag_id |
int |
Идентификатор тега, связанного с индексом XPath столбца XML, который определяет, где именно в документе находится значение |
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.