Geodatabase-Systemtabellen in SQL Server

Wenn Sie die Verbindung mit einer Enterprise-Geodatabase über einen ArcGIS-Client oder einen ArcGIS Server-Web-Service herstellen, interagieren Sie mit den Datasets, die Sie oder andere Datenbankbenutzer der Geodatabase hinzugefügt haben. Um diese Daten zu verfolgen und Geodatabase-Verhalten zu implementieren, verwenden Enterprise-Geodatabases Systemtabellen.

Die Systemtabellen und ihr Inhalt sollten ausschließlich mit der ArcGIS-Software oder dem -SDK geändert werden. Sie können jedoch den Inhalt der Systemtabellen mit SQL anzeigen.

Kernsystemtabellen

Die Systemtabellen und ihr Inhalt sollten ausschließlich mit der ArcGIS-Software oder dem -SDK geändert werden. Sie können jedoch den Inhalt der Systemtabellen mit SQL anzeigen.

Wenn Sie eine Abfrage in einer Microsoft SQL Server-Datenbank durchführen, die eine Enterprise-Geodatabase enthält, werden entweder im Schema des SDE-Benutzers oder im DBO-Schema die folgenden Kernsystemtabellen angezeigt:

  • GDB_CONFLICTS
  • GDB_ITEMRELATIONSHIPS
  • GDB_ITEMRELATIONSHIPTYPES
  • GDB_ITEMS
  • GDB_ITEMTYPES
  • GDB_LOCKS
  • GDB_REPLICALOG
  • GDB_TABLES_LAST_MODIFIED
  • SDE_archives
  • SDE_branch_tables_modified
  • SDE_branches
  • SDE_column_registry
  • SDE_compress_log: Diese Tabelle wird erstellt, wenn Sie die Geodatabase zum ersten Mal komprimieren.
  • SDE_dbtune
  • SDE_geometry_columns
  • SDE_layer_locks
  • SDE_layers
  • SDE_lineages_modified
  • SDE_multibranch_tables
  • SDE_mvtables_modified
  • SDE_object_ids
  • SDE_object_locks
  • SDE_process_information
  • SDE_raster_columns
  • SDE_server_config
  • SDE_spatial_references
  • SDE_state_lineages
  • SDE_state_locks
  • SDE_states
  • SDE_table_locks
  • SDE_table_registry
  • SDE_tables_last_edit_time
  • SDE_tables_modified
  • SDE_version
  • SDE_versions

Die folgenden Tabellen sind in der Geodatabase vorhanden, werden aber nicht mehr verwendet. Sie werden in einer zukünftigen Version möglicherweise entfernt.

  • SDE_locators
  • SDE_metadata
  • SDE_layer_stats
  • SDE_logfile_pool
  • SDE_xml_columns
  • SDE_xml_index_tags
  • SDE_xml_indexes

Tabellen, die Enterprise-Geodatabase-Funktionen implementieren

Informationen für einige Geodatabase-Funktionen werden nur in Kernsystemtabellen gespeichert. Informationen für die folgenden Funktionen werden beispielsweise in Kernsystemtabellen gespeichert. Es werden keine zusätzlichen Tabellen in der Datenbank erstellt, wenn Sie diese Funktionalität für Benutzerdaten definieren oder aktivieren:

  • Attributregeln: Werden in der Systemtabelle GDB_ITEMS gespeichert.
  • Verzweigungsversionen: Sechs Felder werden einer Tabelle oder Business-Tabelle einer Feature-Class hinzugefügt, wenn sie für die Teilnahme an der Verzweigungsversionierung zum Verfolgen von Änderungen registriert ist.
  • Domänen: Werden in der Systemtabelle GDB_ITEMS gespeichert. Ein Feld in der GDB_ITEMTYPES-Systemtabelle identifiziert das Objekt als Domäne.
  • Beziehungsklassen: Werden in den Systemtabellen GDB_ITEMS und GDB_ITEMRELATIONSHIPS gespeichert.

Die in den folgenden Abschnitten beschriebenen Geodatabase-Funktionen erstellen jedoch zusätzliche interne Tabellen, wenn Sie die jeweilige Funktion aktivieren oder nutzen.

Geodatabase-Archive

Sie können den Transaktionszeit-Verlauf für die Daten mit der Geodatabase-Archivierung verfolgen. Bei der Transaktionszeit handelt es sich um den Zeitpunkt, an dem ein Feature der Datenbank hinzugefügt wurde oder in der Datenbank gelöscht bzw. aktualisiert wurde.

Wenn Sie die Geodatabase-Archivierung für eine Tabelle oder Feature-Class aktivieren, wird eine Archivklasse erstellt. Eine Archivklasse ist eine Kopie der Business-Tabelle, die die gleichen Felder sowie drei neue Felder, GDB_FROM_DATE, GDB_TO_DATE und GDB_ARCHIVE_OID, enthält. Wenn Sie die Archivierung in einer Tabelle oder Feature-Class aktivieren, für die die traditionelle Versionierung durchgeführt wird, wird in der Systemtabelle SDE_archives ebenfalls ein Datensatz hinzugefügt. In diesem Datensatz sind die Registrierungs-IDs der Tabelle, die für Archivierung aktiviert wurde, und der zugehörigen Archivklassentabelle gespeichert.

Der Name der Archivklassentabelle entspricht dem Namen der ursprünglichen Business-Tabelle gefolgt von einem Unterstrich und dem Buchstaben H. Beispiel: Wenn die Archivierung in einer Feature-Class mit dem Namen "buildings" aktiviert ist, wird die Archivklasse "buildings_H" erstellt. Diese Archivklassentabelle wird in demselben Schema gespeichert wie die Business-Tabelle.

Wenn Sie nicht benötigte Archivdatensätze aus Archivklassen, die nicht als versioniert registriert sind, entfernen, wird diese Aktion in der SDE_metadata-Systemtabelle aufgezeichnet.

Traditionelle Versionen

Wenn Sie eine Feature-Class oder Tabelle für die Beteiligung an traditionellen Versionen registrieren, werden zwei Tabellen für die Verfolgung von Änderungen an Daten erstellt: die Adds-Tabelle und die Deletes-Tabelle. Zusammen werden sie als Delta-Tabellen bezeichnet.

In der Tabelle "(a_<registration_id>)" (Adds-Tabelle) werden Informationen zu jedem eingefügten oder aktualisierten Datensatz (Feature) in einer versionierten Business-Tabelle verwaltet. Sie wird abgefragt, um die hinzugefügten oder geänderten Datensätze in einem bestimmten Datenbankzustand zu identifizieren.

In der Tabelle "d_<registration_id>" (Deletes-Tabelle) werden Informationen zu den gelöschten oder aktualisierten Zeilen in einer versionierten Business-Tabelle verwaltet. Sie wird abgefragt, um die gelöschten oder geänderten Zeilen in einem bestimmten Zustand zu identifizieren. Wenn eine Zeile gelöscht wird, wird der Datensatz nicht physisch entfernt. Er wird als gelöscht markiert und in nachfolgenden Datenbankabfragen nicht mehr zurückgegeben.

"registration_id" im Namen der Adds-Tabelle und der Deletes-Tabelle entspricht dem Wert für die versionierte Tabelle in der Systemtabelle SDE_table_registry.

Diese Tabellen werden in demselben Benutzerschema erstellt wie die Tabelle oder Feature-Class, die als versioniert registriert ist.

Zusätzlich zu den Delta-Tabellen verfolgen die Kernsystemtabellen SDE_states, SDE_state_lineages, SDE_mvtables_modified und SDE_versions versionierte Tabellen und Änderungen.

Keyset-Tabellen

ArcGIS-Clients verwenden Keyset-Tabellen zur Verbesserung der Abfrageleistung. In den Keyset-Tabellen wird eine Liste ausgewählter Zeilen gespeichert, wenn ein ArcGIS-Client eine Geodatabase-Beziehungsabfrage ausführt, durch die Tabellen mithilfe von Attributen vom Typ "Ganzzahl", "Zahl", "Datum" oder "Zeichenfolge" verbunden werden. In diesen Tabellen werden Verbindungen mit anderen Attributen als dem Objekt-ID-Feld gespeichert.

In der Geodatabase sind keine Keyset-Tabellen enthalten, bis Sie einen der folgenden Vorgänge ausführen:

  • Sie wählen in einer Feature-Class in einer Karte in ArcGIS Pro oder ArcMap mehr als 99 Datensätze aus, und die Feature-Class ist Mitglied einer Beziehungsklasse.
  • In ArcGIS Pro oder ArcMap öffnen Sie die Attributtabelle einer Feature-Class, die Mitglied einer Beziehungsklasse ist und rufen die zugehörige Tabelle ab.

Eine Keyset-Tabelle wird als globale temporäre Tabelle pro Verbindung pro Sitzung erstellt. Da es sich um eine temporäre Tabelle handelt, wird die Keyset-Tabelle gelöscht, wenn der Benutzer die Verbindung zur Geodatabase trennt.

Keyset-Tabellennamen haben das folgende Format:

<user_schema>.##keyset_<process_id>_sde, wobei <schema_name> das Schema des Benutzers ist, der die Erstellung der Tabelle veranlasst hat, und <process_id> die Prozess-ID der Sitzung des Benutzers, die die Erstellung der Tabelle veranlasst hat.

Protokolldateitabellen

Protokolldateitabellen werden von ArcGIS-Clients verwendet, um die Abfrageleistung durch Speichern von Listen ausgewählter Zeilen zu verbessern. Protokolldateitabellen verwenden Verbindungen, die auf Objekt-ID-Attributen basieren.

Geodatabases in SQL Server verwenden sitzungsbasierte, lokale temporäre Tabellen für Protokolldateitabellen. Jede Client-Sitzung, die eine Protokolldateitabelle erfordert, hat eine dedizierte Protokolldateitabelle. Der Tabellenname lautet SDE_session<sde_ID>, wobei <SDE_ID> die eindeutige Sitzungs-ID aus der Tabelle SDE_process_information und <DBID> die Datenbank-ID aus SQL Server ist.