Bearbeiten von versionierten Daten in DB2 mit Multiversioned Views und SQL
Sie können versionierte Attributdaten in einer Geodatabase in IBM DB2 unter den Betriebssystemen Linux, UNIX oder Windows bearbeiten, indem Sie eine für die Daten erstellte Multiversioned View editieren.
Multiversioned Views werden in DB2-Datenbanken unter z-Betriebssystemen nicht unterstützt.
Zusammen mit ArcSDE werden verschiedene gespeicherte Prozeduren installiert, die Sie beim Arbeiten mit Multiversioned Views unterstützen. Diese Komponenten und ihre Beschreibungen sind im Folgenden aufgeführt:
Gespeicherte Prozedur |
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. |
CALL sde.create_version ('<parent_version>', '<child_version>', <name_rule>, <access>, '<description>', <message_code_output>, <message_output>) "<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. "<message_code_output>" festlegt, dass der SQL-Code an Sie zurückgegeben wird. "<message_output>" festlegt, dass die SQL-Meldungen an Sie zurückgegeben werden. |
sde.setcurrentversion |
Legt fest, auf welche Geodatabase-Version Sie zugreifen. |
CALL sde.setcurrentversion('<version_name>', <message_code_output>, <message_output>) "<version_name>" ist der Name der Geodatabase-Version, zu der Sie eine Verbindung herstellen möchten. |
sde.edit_version |
Startet und beendet eine Editiersitzung. |
CALL sde.edit_version('<version_name>', <1 or 2>, <message_code_output>, <message_output>) 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. |
CALL sde.delete_version('<version_name>', <message_code_output>, <message_output>) |
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.
- 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".
Denken Sie daran, dass das in einer Multiversioned View bearbeitete Dataset bereits als versioniert registriert sein muss.
-
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:db2 –D code –u sarja –p not4U
-
Erstellen Sie eine neue Version, in der Sie die Bearbeitungen vornehmen.
CALL sde.create_version ('SDE.DEFAULT', 'mvedits', 1, 1, 'multiversioned view edit version', ?, ?)
-
Legen Sie die Version für die Editiersitzung auf die soeben erstellte Child-Version fest.
CALL sde.setcurrentversion('mvedits', ?, ?)
-
Starten Sie eine Editiersitzung, indem Sie die gespeicherte Prozedur "edit_version" aufrufen und 1 angeben. "1" bedeutet, dass eine Editiersitzung gestartet wird.
CALL sde.edit_version('mvedits', 1, ?, ?)
-
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
-
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) VALUES (456, 'Anjo Badsu')
Tipp:In der INSERT-Anweisung wird kein Objekt-ID-Wert angegeben. Die Multiversioned View ruft die nächste verfügbare Objekt-ID automatisch ab und fügt sie für die Zeile ein.
Das Versionieren einer Tabelle, die nur bei ArcSDE registriert wurde und über eine vom Benutzer verwaltete Objekt-ID-Spalte verfügt, ist zwar möglich, aber nicht zu empfehlen. Falls Sie dies doch durchführen, müssen Sie eine Objekt-ID mit den INSERT-Anweisungen bereitstellen. Die Multiversioned View kann keinen Wert für Sie generieren.
- Führen Sie eine COMMIT- oder ROLLBACK-Anweisung aus.
-
Beenden Sie die Editiersitzung, indem Sie die gespeicherte Prozedur "edit_version" aufrufen, jetzt aber den Wert 2 angeben. "2" bedeutet, dass eine Editiersitzung beendet werden soll.
CALL sde.edit_version('mvedits', 2, ?, ?)
-
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.
CALL sde.delete_version('mvedits', ?,?)
In einfache Anführungszeichen eingeschlossener Text wird wörtlich gelesen. Daher muss der Text, den Sie innerhalb von Anführungszeichen eingeben, hinsichtlich Groß-/Kleinschreibung dem in der Datenbank gespeicherten Text entsprechen (komplette Großschreibung, komplette Kleinschreibung oder eine Mischung).