SQL Server 中地理数据库 (Geodatabase) 内的 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 查询,则还必须创建全文目录。有关详细信息,请参阅 SQL Server 文档。

ArcSDE XML 数据类型需要 SQL Server 数据库启用全文搜索,并需要创建一个全文目录。如果要了解如何执行此操作,请参阅 SQL Server 存储 ArcSDE XML 列之前的准备工作在 SQL Server 中创建全文目录

ArcSDE XML 数据类型用于存储元数据文档集,以便支持 ArcIMS 元数据服务。因此,如果使用 ArcIMS 元数据服务,则必须将参数 XML_COLUMN_STORAGE 设置为 SDE_XML。

ArcGIS Desktop 中的 XML 列

地理数据库不完全支持 XML 列。因此,请注意以下事项:

SQL Server DBMS 中的 XML 列

有三个 ArcSDE 系统表可用于管理 XML 列: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 更改以下任何表。

SDE_xml_columns

每当在业务表中添加一个 XML 列,就会在 XML 列的表中添加一行。该表在每个 ArcSDE 数据库中都会出现一次。

字段名

字段类型

描述

是否允许空值

column_id

整型

XML 列的标识符和表的主键

在创建 XML 列时由 ArcSDE 分配此值。

非空

registration_id

整型

包含 XML 列的业务表的标识符以及系统表 SDE_table_registry 的外键

非空

column_name

nvarchar(32)

业务表中 XML 列的名称

非空

index_id

整型

与 XML 列(如果存在)相关联的 XPath 索引的标识符以及 SDE_xml_indexes 表的外键

minimum_id

整型

在业务表的 XML 列中使用的初始编号值,用于标识各 XML 文档

config_keyword

nvarchar(32)

DBTUNE 配置关键字,它的参数可确定如何在数据库中定义 XML 文档、XML XPath 索引表以及针对这些表所创建的文本索引

有关详细信息,请参阅 SQL Server 中的 ArcSDE XML 参数

xflags

整型

该值用于指明 XML 文档表中的原始文档是以压缩形式存储还是以解压缩形式存储

默认情况下,文档以压缩形式存储,这是因为压缩后的文档可以提高性能。

非空

SDE_xml_indexes

该表在每个 ArcSDE 数据库中都会出现一次。它为具有 XPath 索引的每个 XML 列都提供了一行空间。

字段名

字段类型

描述

是否允许空值

index_id

整型

XPath 索引的标识符以及表的主键

非空

index_name

nvarchar(32)

XPath 索引的名称

对于与 ArcIMS 元数据服务相关联的 XPath 索引,名称为 ims_xml#,其中 # 是元数据服务业务表中 XML 列的标识符。

非空

owner

nvarchar(32)

拥有 XML 列的数据库用户

对于 ArcIMS 元数据服务,该字段指代在服务的 ArcXML 配置文件中指定的用户。

非空

index_type

整型

该值用于指明 XPath 索引类型

在 ArcGIS 9.1 及更高版本中,值为 2 时表示索引类型 SE_XML_INDEX_DEFINITION,值为 1 时表示索引类型 SE_XML_INDEX_TEMPLATE。对于与 ArcIMS 元数据服务相关联的 XPath 索引,只支持索引类型 SE_XML_INDEX_DEFINITION。

非空

description

nvarchar(64)

用于标识 XPath 索引的文本

如果已使用索引定义文件创建索引,则可以在文件顶部指定索引描述。

SDE_xml_index_tags

XML 列可以使用 XPath 索引(是否使用取决于具体需要),这使您可以对每个文档中的特定 XML 元素或属性的内容进行搜索。有关每个 XPath 索引中包含或排除哪些元素和属性都在此表中进行定义。

该表在每个 ArcSDE 数据库中都会出现一次。它为 XML 列的 XPath 索引所关联的每个 XPath 都提供一行空间。

字段名

字段类型

描述

是否允许空值

index_id

整型

与 XML 列(如果存在)相关联的 XPath 索引的标识符以及 SDE_xml_indexes 表的外键

非空

tag_id

整型

XPath 或标记的标识符

非空

tag_name

nvarchar(1024)

对 XML 文档中可能出现的 XML 元素或属性进行标识的绝对 XPath

例如,/metadata/mdDateSt 用于标识 XML 元素,/metadata/dataIdInfo/tpCat/TopicCatCd/@value 用于标识 XML 属性。这些 XPath 不得使用星号 (*) 来指代一组 XML 元素或属性,每个元素或属性都按照此表中指定的 XPath 进行精确匹配。在有效的 XML 文档中,不能将元素命名为 *。

非空

data_type

整型

该值用于指明 XML 元素或属性的索引形式是数字、变长字符还是文本

1 表示标记内容的索引形式是文本;2 表示标记内容的索引形式是数字;3 表示标记内容的索引形式是变长字符。

非空

tag_alias

整型

可以用来标识 XPath 的数字

例如,Z39.50 通信协议使用数字代码指代可以搜索的内容。此列不适用于 ArcIMS Z39.50 连接器。

description

nvarchar(64)

对 XML 元素或属性中应包含的内容进行标识的文本

is_excluded

整型

该值用于指明 XPath 索引中是包含还是排除 XML 元素

0 = 包含 XML 元素;1 = 排除 XML 元素。

非空

SDE_xml_doc<column_id>

SDE_xml_doc<column_id> 表用于存储 XML 文档并对 XML 文档内容的全文索引进行维护。ArcSDE 数据库中针对每个 XML 列都有一个这样的表。表名称中的数字是 XML 列的标识符。该表为存储在 XML 列中的每个 XML 文档都提供了一行空间。

字段名

字段类型

描述

是否允许空值

sde_xml_id

整型

存储在 XML 列中的 XML 文档的标识符以及表的主键

非空

doc_property

整型

该值用于指明在向 XPath 索引添加 XML 文档内容时是否发现任何冲突

1 = 发现一处冲突;例如,某个元素的索引形式本应是数字,而文档却在该元素中包含一个字符串。NULL 值 = 为文档建立索引时未出现任何问题。

非空

xml_doc

varbinarymax

XML 文档

非空

xml_doc_val

varbinarymax

删除了所有 XML 标记和其他置标的整个 XML 文档的内容

默认情况下,系统为该列建立文本索引;此索引用于响应全文查询。对于 ArcIMS 元数据服务,此索引用于响应 FULLTEXT 请求。

非空

sde_time_stamp

timestamp

用于支持对文本索引的增量更新

非空

SDE_xml_idx<column_id>

SDE_xml_idx<column_id> 表是针对具有 XPath 文本索引的 XML 列而创建的。此表用于存储已建立索引的每个 XPath 的文本或数字内容。

表名称中的 ID 号是 XML 列的内部注册号。

字段名

字段类型

描述

是否允许空值

xml_key_column

整型

索引值的标识符以及表的主键

非空

sde_xml_id

整型

包含索引值的 XML 文档的标识符

非空

tag_id

整型

与 XML 列的 XPath 索引相关联的标记的标识符,用于标识该值在文档中的存储位置

非空

double_tag

浮点型

在 XPath 索引定义中将标记定义为 DOUBLE 时的索引值

string_tag

nvarchar(256)

在 XPath 索引定义中将标记定义为 VARCHAR 时的索引值

text_tag

ntext

在 XPath 索引定义中将标记定义为 STRING 时的索引值

sde_time_stamp

timestamp

用于支持对文本索引的增量更新

非空

下图展现了一个包含 XML 列的表以及用于追踪 XML 列的几个系统表。虚线表示表之间的隐含关系;实线表示表之间明确定义的关系。

SQL Server 中的站点业务表以及用于追踪 XML 列的系统表

XML 文档中的 XML 列

您不能将包含 XML 列的表导出到 XML 工作空间文档中。可以将其导出到 XML 记录集文档中,但该文档中不存在任何可以用来区辨出 XML 列的元素。

相关主题


3/7/2012