Bearbeiten von versionierten Daten in Informix mit Multiversioned Views und SQL

Sie können versionierte Daten in einer Geodatabase bearbeiten, indem Sie eine für die Daten erstellte Multiversioned View editieren.

Zusammen mit ArcSDE werden verschiedene Funktionen installiert, die Sie beim Arbeiten mit Multiversioned Views unterstützen. Diese Funktionen und ihre Beschreibungen sind im Folgenden aufgeführt:

Funktion

Zweck

Syntax und Beschreibung

sde.create_version

Erstellen Sie eine neue Geodatabase-Version.

Bearbeiten Sie stets Ihre eigene, separate Version; mehrere Editoren können nicht dieselbe Version mit Multiversioned Views bearbeiten.

EXECUTE FUNCTION sde.create_version ('<parent_version>', '<child_version>', <name_rule>, <access>, '<description>'

"<parent_version>" die Version ist, aus der Ihre Version erstellt wird.

"<child_version>" der Name der von Ihnen erstellten Version ist.

"<name_rule>" gibt an, ob der für die Version angegebene Name entsprechend der Vorgabe übernommen werden soll (2) oder ob ein eindeutiger Name erstellt werden soll, falls ein Name doppelt angegeben wird (1).

"<access>" die Berechtigungsstufe der Version ist; 0 = Privat, 1 = Öffentlich, 2 = Geschützt.

"<description>" eine Textbeschreibung der Child-Version ist.

sde.set_current_version

Legt fest, auf welche Geodatabase-Version Sie zugreifen.

EXECUTE FUNCTION sde.set_current_version('<version_name>')

"<version_name>" ist die Geodatabase-Version

sde.edit_version

Startet und beendet eine Editiersitzung.

EXECUTE FUNCTION sde.edit_version('<version_name>',1)

Geben Sie 1 an, um die Editiersitzung zu starten. Geben Sie 2 an, um sie zu beenden.

sde.delete_version

Löscht eine Geodatabase-Version.

EXECUTE FUNCTION sde.delete_version('<version_name>')

Wenn Sie versionierte Tabellen in Multiversioned Views bearbeiten, werden Änderungen an den Delta-Tabellen vorgenommen, und Zeilen-ID-Werte (Objekt-ID) für neue Datensätze werden automatisch generiert. Anders als beim Bearbeiten von versionierten Daten in einer ArcGIS-Editiersitzung wird jedoch kein interner Versionsabgleich mit diesen Änderungen vorgenommen.

Zudem wird auf den von der Version beim Starten einer Editiersitzung für eine Multiversioned View referenzierten Status eine exklusive Sperre angewendet. Daher wird dringend davon abgeraten, dass Multiversioned Views zum Bearbeiten der DEFAULT-Version oder einer anderen Version verwendet werden, die gleichzeitig von anderen Benutzern bearbeitet oder abgeglichen werden kann, da Konflikte nicht erkannt werden können und andere Benutzer durch Sperren blockiert werden. Erstellen Sie stattdessen eine eigene Version, die eigens für Ihre Editiersitzung in Multiversioned Views vorgesehen ist.

VorsichtVorsicht:
  • Vorgänge zur Versionsverwaltung, wie das Abgleichen, Lösen von Konflikten und Bereitstellen, müssen mit der ArcGIS-Software durchgeführt werden. Bei nicht ordnungsgemäßem Versions-Management können bei der Arbeit mit Sichten Schäden an der Geodatabase auftreten.
  • Verwenden Sie niemals die DBMS-Werkzeuge (Datenbankmanagementsystem), um Zeilen-ID-Felder (Objekt-ID) zu aktualisieren, die von ArcSDE in der Datenbank verwaltet werden. Diese Objekt-ID-Felder werden von der Geodatabase zugewiesen und verwaltet und dürfen daher per SQL nicht geändert werden.
  • Nehmen Sie niemals Änderungen an der DEFAULT-Version der Geodatabase mit SQL vor. Beim Starten einer Editiersitzung auf einer Version wird eine exklusive Sperre auf den Status angewendet, den die Version referenziert. Wenn Sie die DEFAULT-Version sperren, verhindern Sie, dass ArcGIS-Benutzer eine Verbindung zur Geodatabase herstellen.

In den folgenden Schritten werden Sie durch das Erstellen einer Multiversioned View, Erstellen einer Version für die Bearbeitung, Festlegen der zu bearbeitenden Version, Starten einer Editiersitzung, Durchführen einiger Änderungen über die Multiversioned View, Beenden der Editiersitzung, Übernehmen der Änderungen in der Datenbank und Löschen der Version geführt, die zur Bearbeitung erstellt wurde. In den Beispielen ist die erstellte Multiversioned View zum Durchführen der Änderungen in der Tabelle "code_mv", die für die Bearbeitung erstellte und verwendete Version hingegen "mvedits".

Schritte:
  1. Führen Sie an einer MS-DOS- (Windows) oder Shell-Befehlseingabeaufforderung (UNIX oder Linux) das Dienstprogramm "sdetable" aus, um eine Multiversioned View zu erstellen.
    sdetable –o  create_mv_view –T code_mv 
    –t code_enf –i sde:informix –D code –u sarja –p not4U
  2. Erstellen Sie eine neue Version, in der Sie die Bearbeitungen vornehmen.
    EXECUTE FUNCTION sde.create_version ('sde.DEFAULT', 'mvedits', 1, 1, 'multiversioned view edit version')
  3. Legen Sie die Version für die Editiersitzung auf die soeben erstellte Child-Version fest.
    EXECUTE FUNCTION set_current_version('mvedits')
  4. Starten Sie eine Editiersitzung, indem Sie die Funktion "edit_version" ausführen und 1 angeben. "1" bedeutet, dass eine Editiersitzung gestartet wird.
    EXECUTE FUNCTION sde.edit_version('mvedits',1)
  5. Nehmen Sie die erste Änderung an der Multiversioned View mithilfe von SQL vor.

    In diesem Beispiel wird ein bestehender Datensatz aktualisiert.

    UPDATE code_mv 
    SET propowner = 'C. Industry' 
    WHERE vid = 2233

  6. Nehmen Sie die nächste Änderung an der Multiversioned View mithilfe von SQL vor.

    In diesem Beispiel wird ein neuer Datensatz eingefügt.

    INSERT INTO code_mv 
    (codenum,propowner,shape) 
    VALUES 
    (567, 'Anjo Badsu', ST_PointFromText('point (40 40))', 12)
  7. Führen Sie eine COMMIT- oder ROLLBACK-Anweisung aus.
  8. Beenden Sie die Editiersitzung, indem Sie die Funktion "edit_version" ausführen, jetzt aber den Wert 2 angeben.

    "2" bedeutet, dass eine Editiersitzung beendet wird.

    EXECUTE FUNCTION sde.edit_version('mvedits',2)

  9. Führen Sie nach Beendigung aller Editierschritte einen Abgleich durch, und schreiben Sie die Änderungen über ArcGIS Desktop zurück. Löschen Sie anschließend die in Schritt 2 erstellte Geodatabase-Version. Falls Sie die Änderungen nicht benötigen, können Sie die in Schritt 2 erstellte Version löschen, ohne die Änderungen abzugleichen und zurückzuschreiben.
    EXECUTE FUNCTION sde.delete_version('mvedits')

Verwandte Themen


3/6/2012