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: *
- EINFG: Der Adds-Tabelle der zugrundeliegenden Basistabelle wird eine Zeile hinzugefügt. Für die neue Reihe wird automatisch ein Objekt-ID-Wert generiert.
- Aktualisierung: Aktualisierung löscht die ursprüngliche Zeile und fügt eine neue hinzu, die die neuen Informationen enthält. Sowohl den Adds- als auch den Deletes-Tabellen der zugrundeliegenden Basistabelle wird eine neue Reihe hinzugefügt, wenn Sie eine Aktualisierungsanweisung ausführen.
- ENTF: Der Deltatabelle der zugrundeliegenden Basistabelle wird eine Zeile hinzugefügt.
*Beim Bearbeiten der STANDARD-Version, wenn diese auf Status 0 zeigt, werden alle Bearbeitungen sofort zur 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 durch 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 Seite 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 Seite 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 einen Binary-Speichertyp für Geometrie.
- Die versionierte Feature-Class oder Tabelle, die Sie bearbeiten möchten, ist registriert als versioniert 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:
- Erstellen Sie eine versionierte Sicht auf einer versionierten Tabelle oder einer Feature-Class, wenn noch keine vorhanden ist.
- Erstellen Sie eine Geodatabase-Version, in der Sie Ihre Bearbeitungen vornehmen.
- 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.
- Starten Sie eine Editiersitzung, indem Sie die Prozedur oder Funktion "edit_version" für Ihre Datenbank ausführen.
- Nehmen Sie Ihre Bearbeitungen der versionierten Sicht mit SQL vor.
- Übernehmen Sie die Bearbeitungen in der Datenbank, oder setzen Sie sie zurück.
- Stoppen Sie die Editiersitzung, indem Sie die Prozedur oder Funktion "edit_version" für Ihre Datenbank ausführen.
- Führen Sie einen Abgleich durch, und übermitteln Sie die Änderungen über ArcGIS.
- 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 Seite zutreffen:
- Die auszuführenden Änderungen sind kurze Transaktionen.
- Ihre Seite 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 keine binären Geometriespeicher.
- Die Tabelle oder Feature-Class, die bearbeitet werden soll, ist nicht registriert als versioniert mit der Option, die Änderungen in die Basistabelle zu verschieben.
Wenn Sie die STANDARD-Version bearbeiten, werden die Änderungen so in der Deltatabelle gespeichert, wie wenn 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 Ansicht 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 Ansicht vorgenommen werden, können die über die versionierte Ansicht 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
![Detailinformationen Detailinformationen](rsrc/divein.png)
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:
- Erstellen Sie eine versionierte Sicht auf einer versionierten Tabelle oder einer Feature-Class, wenn noch keine vorhanden ist.
Hinweis:
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.
- Nehmen Sie Ihre Bearbeitungen der versionierten Sicht mit SQL vor. Sie bearbeiten automatisch den aktuellen Status der STANDARD-Version.
- Ü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.