SQL Server 中地理数据库 (geodatabase) 内的密钥集表

在以下情况下将使用密钥集表来存储一组所选的行:ArcGIS Desktop 客户端执行使用整型、数值型、日期型或字符串型属性来连接表的地理数据库关系查询。

正如有关 SQL Server 的 ArcSDE 日志文件表配置选项中所述,日志文件表存储所选要素的 ObjectID。密钥集表用于保存使用 ObjectID 以外的属性的连接。

当数据库查询中的源选择集超过 99 行时,将在每次会话中为每个连接创建一个密钥集表。

ArcGIS Desktop 中的密钥集表

ArcGIS Desktop 中无法显示密钥集表。但是,以下操作可创建和填充密钥集表:在 ArcMap 中从某个关系类所涉及的要素类中选择超过 99 条记录,然后打开属性表,并使用“选项”菜单中的“关联表”列表检索相关表。启动编辑会话时也会创建密钥集表。

Microsoft SQL Server 数据库中的密钥集表

只有发生以下两种情况之一时,地理数据库中才会出现密钥集表:

发生以上两种情况之一时,密钥集表将创建为全局临时表。第一种情况会创建并填充密钥集表。第二种情况将仅创建密钥集表,而在做出限定选择后才会对其进行填充。

密钥集表名称包括引发密钥集表创建操作的用户对应的方案名称以及用户会话的进程标识号。格式如下:

<user_schema>.##keyset_<process_id>_sde

密钥集表将存储每个选择集的密钥集 ID 号以及确定要素类间关系时所依据的字段的值。

因为密钥集表是临时表,所以在用户与数据库断开连接时会被删除。

以下是在相关表 LATERALS 与 CONTRACTORS 之间执行选择时创建的密钥集表。在本例中,将对 LONG_VAL 字段进行填充,该字段包含 LATERALS 与 CONTRACTORS 之间的关系类所依据的 CONTRACTOR_ID 字段的值。

SQL Server 中的密钥集表及其关联的业务表

<user_schema>.##keyset_<process_id>_sde

以下是 SQL Server 中密钥集表的定义

字段名

字段类型

描述

是否允许空值

KEYSET_ID

integer

密钥集选择内容的标识符

非空

LONG_VAL

integer

关系类所依据的字段的值,前提是该字段为数值字段

STR_VAL

nvarchar(256)

关系类所依据的字段的值,前提是该字段为字符串字段

DBL_VAL

float

关系类所依据的字段的值,前提是该字段为双精度字段

DATE_VAL

datetime

datetime2

关系类所依据的字段的值,前提是该字段为日期字段

XML 文档中的密钥集表

密钥集表是一种临时表,因而不存储在 XML 文档中。

相关主题


3/7/2012