Um als versioniert registrierte Daten (traditionell) von einem SQL-Client zu bearbeiten, müssen Sie eine versionierte Sicht der Daten bearbeiten, nicht die Basistabelle (Business) selbst. Traditionell 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 Deletes-Tabelle der zugrundeliegenden Basistabelle wird eine Zeile hinzugefügt.
*Beim Bearbeiten der Default-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 Desktop oder ein Python-Skript abgleichen.
Bearbeitungsoptionen
Sie können ein neue, benannte Geodatabase-Version erstellen und diese bearbeiten oder Sie können die Default-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 Default-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 Status geschrieben, auf den die benannte Version aktuell 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 Default-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.
- Die zu bearbeitenden Daten werden nicht repliziert. Falls Sie die Default-Version replizierter Daten bearbeiten, erfolgt keine Synchronisation von Änderungen.
Wenn Sie die Default-Version bearbeiten, werden die Änderungen so in der Deltatabelle gespeichert, wie wenn Sie eine benannte Version bearbeiten. Wenn Sie die Default-Version bearbeiten, können die Änderungen von jedem, der die Default-Version ansieht, eingesehen werden.
Wenn die Default-Version auf Status 0 verweist, wird jede Änderung direkt auf die Basistabelle der versionierten Tabelle oder der Feature-Class angewendet. Wenn die Default-Version mit einem ArcGIS-Client bearbeitet wird, wird die Version aktualisiert, um beim Speichern auf einen neuen Datenbank-State zu verweisen. Wenn die Default-Version direkt mit einer versionierten Ansicht bearbeitet wird, wird jede Einfügung, Aktualisierung und jeder Löschvorgang in den aktuellen State, auf den die Default-Version verweist, geschrieben.
Wenn die Default-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 Default-Version arbeiten
- Benutzer oder Anwendungen, die mit einer Child-Version arbeiten, die eine Statusabstammung hat, die den aktuellen Status der Default-Version enthält
Sie legen die Version nicht fest oder starten eine Editiersitzung, wenn Sie Daten in der Default-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.
- Nehmen Sie Ihre Bearbeitungen der versionierten Sicht mit SQL vor. Sie bearbeiten automatisch den aktuellen Status der Default-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.