Kurzer Überblick über das Bearbeiten von versionierten Daten mit SQL

Um versionierte Daten von einem SQL-Client zu bearbeiten, müssen Sie eine versionierte Sicht der Daten bearbeiten, nicht die Basistabelle (Business) selbst. Versionierte Tabellen verwenden zwei verknüpfte Tabellen - die Adds- und Deletes-Tabellen (zusammen als Deltatabellen bezeichnet) – um Änderungen aufzuzeichnen. Bei der Bearbeitung einer versionierten Sicht der Tabelle werden die Bearbeitungen in die Adds- und Deletes-Tabellen geschrieben. Die direkte Bearbeitung der Basistabelle umgeht diesen Schritt und könnte zu verwaisten Datensätzen und Datenverlust führen.

Wenn Sie SQL-Datenbearbeitungsaussagen gegen eine versionierte Sicht ausführen, findet das Folgende in der Datenbank für jeden Typ der Anweisung statt: *

*Beim Bearbeiten der STANDARD-Version, wenn diese auf Status 0 zeigt, werden alle Bearbeitungen sofort in die Basistabelle verschoben.

Beachten Sie, dass bei Bearbeitungen mit SQL kein interner Versionsabgleich ausgeführt wird. Aus diesem Grund müssen Sie Ihre Änderungen im Anschluss mit einer Parent-Version über ArcGIS for Desktop oder ein Python-Skript abgleichen.

Bearbeitungsmodelle

Sie können ein neue, benannte Geodatabase-Version erstellen und diese bearbeiten oder Sie können die STANDARD-Version direkt bearbeiten. Welches dieser Modelle Sie auswählen, hängt von den Anforderungen Ihrer Site ab. Es ist wichtig, das geeignete Modell auszuwählen - entweder das Bearbeiten einer benannten Version oder das Bearbeiten der STANDARD-Version – um so optimale Performance und Skalierbarkeit sicherzustellen.

Bearbeiten einer benannten Version

Erstellen und verwenden Sie benannte Versionen, die mit SQL durch versionierte Sichten bearbeitet werden sollen, wenn eine der folgenden Bedingungen auf Ihre Site zutrifft:

  • Mehrere Editoren müssen die gleichen Daten ändern.
  • Sie benötigen einen gut definierten Qualitätssicherungsprozess.
  • Die Änderungen müssen anderen Benutzern nicht sofort zur Verfügung stehen; stattdessen können Sie sie zunächst abgleichen und dann veröffentlichen.
  • Die versionierten Feature-Classes, die Sie bearbeiten möchten, verwenden die Geometriespeichertypen "SDEBINARY" oder "OGCWKB" in einer Oracle oder SQL Server-Datenbank.
  • Die versionierte Feature-Class oder Tabelle, die Sie bearbeiten möchten, ist als versioniert registriert mit der Option, die Änderungen in die Basistabelle zu verschieben.

Bei der Bearbeitung durch eine versionierte Sicht der Tabelle werden die Bearbeitungen in den Adds- und Deletes-Tabellen aufgezeichnet. Die Änderungen werden in den aktuellen Status geschrieben, auf den die benannte Version verweist.

Die nachfolgenden Schritte, um Daten in einer benannten Version zu bearbeiten, sollten in der angegebenen Reihenfolge ausgeführt werden:

  1. Erstellen Sie eine versionierte Sicht auf einer versionierten Tabelle oder einer Feature-Class, wenn noch keine vorhanden ist.
  2. Erstellen Sie eine Geodatabase-Version, in der Sie Ihre Bearbeitungen vornehmen.
  3. Verwenden Sie die Prozedur "set_current_version", um anzugeben, dass Sie auf Ihre neue Version zugreifen möchten. Das legt die Editiersitzung auf den Status fest, auf den die benannte Version zeigt, und sperrt die Version.
  4. Starten Sie eine Editiersitzung, indem Sie die Prozedur oder Funktion "edit_version" für Ihre Datenbank ausführen.
  5. Nehmen Sie Ihre Bearbeitungen der versionierten Sicht mit SQL vor.
  6. Übernehmen Sie die Bearbeitungen in der Datenbank, oder setzen Sie sie zurück.
  7. Stoppen Sie die Editiersitzung, indem Sie die Prozedur oder Funktion "edit_version" für Ihre Datenbank ausführen.
  8. Führen Sie einen Abgleich durch, und übermitteln Sie die Änderungen über ArcGIS.
  9. Wenn alle Änderungen in eine Parent-Version mit ArcGIS zurückgeschrieben wurden, können Sie die Version, die Sie für Ihre Änderungen auf der versionierten Sicht erstellt haben, löschen.

Bearbeiten der DEFAULT-Version

Sie können die STANDARD-Version mit SQL durch versionierte Sichten bearbeiten, wenn eine oder mehrere der folgenden Bedingungen auf Ihre Site zutreffen:

  • Die auszuführenden Änderungen sind kurze Transaktionen.
  • Ihre Site schreibt vor, dass die Änderungen, die durch eine versionierte Sicht vorgenommen werden, anderen Nutzern sofort zur Verfügung stehen.
  • Wenn Sie Feature-Classes bearbeiten, verwenden die Feature-Classes räumliche SQL-Datentypen und nicht "SDEBINARY" oder "OGCWKB" als Geometriespeichertypen.
  • Die Tabelle oder Feature-Class, die bearbeitet werden soll, ist nicht als versioniert registriert mit der Option, die Änderungen in die Basistabelle zu verschieben.

Wenn Sie die STANDARD-Version bearbeiten, werden die Änderungen so in der Deltatabelle gespeichert, als würden Sie eine benannte Version bearbeiten. Wenn Sie die STANDARD-Version bearbeiten, können die Änderungen von jedem, der die STANDARD-Version ansieht, eingesehen werden.

Wenn die STANDARD-Version auf Status 0 verweist, wird jede Änderung direkt auf die Basistabelle der versionierten Tabelle oder der Feature-Class angewendet. Wenn die STANDARD-Version mit einem ArcGIS-Client bearbeitet wird, wird die Version aktualisiert, um beim Speichern auf einen neuen Datenbank-State zu verweisen. Wenn die STANDARD-Version direkt mit einer versionierten Sicht bearbeitet wird, wird jede Einfügung, Aktualisierung und jeder Löschvorgang in den aktuellen State, auf den die STANDARD-Version verweist, geschrieben.

Wenn die STANDARD-Version beispielsweise mit einem ArcGIS-Client aktualisiert wird, während mehrere Änderungen über die versionierte Sicht vorgenommen werden, können die über die versionierte Sicht vorgenommenen Änderungen möglicherweise auf mehrere States angewendet werden.

Sobald Ihre Änderungen übernommen wurden, stehen Sie sofort zur Verfügung für:

  • Benutzer oder Anwendungen, die mit der versionierten Tabelle und der STANDARD-Version arbeiten
  • Benutzer oder Anwendungen, die mit einer Child-Version arbeiten, die eine Statusabstammung hat, die den aktuellen Status der STANDARD-Version enthält
Dive-inDive-in:

Wenn die Zeile, die in der STANDARD-Version von einer versionierten Sicht geändert wird, von einer anderen Version in einem Status geändert wurde, der vom aktuellen Status der STANDARD-Version abhängig ist, erstellt die versionierte Sicht einen neuen Geodatabase-Status, aktualisiert die STANDARD-Version, um auf den neuen Status zu verweisen und führt dann die Änderung aus. Dies ist erforderlich, um sicherzustellen, dass die zu ändernde Zeile (die auch in einem Status, der vom Status der STANDARD-Version abhängig ist, geändert wird) nicht von einem Komprimierungsvorgang überschrieben wird, oder wenn die Version des Nachfolgerstatus mit der STANDARD-Version abgeglichen wird.

Sie legen die Version nicht fest oder starten eine Editiersitzung, wenn Sie Daten in der STANDARD-Geodatabase-Version durch eine versionierte Sicht bearbeiten möchten. Führen Sie die Schritte wie folgt aus:

  1. Erstellen Sie eine versionierte Sicht auf einer versionierten Tabelle oder einer Feature-Class, wenn noch keine vorhanden ist.
    HinweisHinweis:

    Wenn die versionierte Sicht vor ArcGIS 10.1 erstellt wurde, müssen Sie sie neu erstellen; ältere versionierte Sichten können nicht in der STANDARD-Version bearbeitet werden.

  2. Nehmen Sie Ihre Bearbeitungen der versionierten Sicht mit SQL vor. Sie bearbeiten automatisch den aktuellen Status der STANDARD-Version.
  3. Übernehmen Sie die Bearbeitungen in der Datenbank, oder setzen Sie sie zurück. Es wird empfohlen, jede Änderung zu bestätigen oder rückgängig zu machen, da exklusive Sperren in den Deltatabellen vorgenommen werden, so lange die Transaktion offen ist. Die Sperren werden erst aufgehoben, wenn die Transaktion beendet wird.

Verwandte Themen

9/12/2013