Bearbeiten von versionierten Daten in SQL Server 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 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

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.

EXEC {dbo | sde}.create_version '<parent_version>', '<child_version>', <name_rule>, <access>, '<description>'

  • <parent_version>: Die Version, aus der Ihre Version erstellt wird.
  • <child_version>: Der Name der von Ihnen erstellten Version.
  • <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 für die Version. Dies ist entweder "0" für privat (nur der Versionsbesitzer kann darauf zugreifen), "1" für öffentlich (alle Benutzer können darauf zugreifen) oder "2" für geschützt (der Versionsbesitzer verfügt über die Lese-/Schreibberechtigungen für die Version, und alle anderen Benutzer verfügen nur über die Leseberechtigung).
  • <description>: Eine Textbeschreibung der Child-Version.

set_current_version

Legt fest, auf welche Geodatabase-Version Sie zugreifen.

EXEC {dbo | sde}.set_current_version '<version_name>'

  • <version_name>: Die Version, die Sie editieren möchten.

edit_version

Startet und beendet eine Editiersitzung.

EXEC {dbo | sde}.edit_version '<version_name>',{1 | 2}

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

delete_version

Löscht eine Geodatabase-Version.

EXEC {dbo | 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".

TippTipp:

Denken Sie daran, dass das in einer Multiversioned View bearbeitete Dataset bereits als versioniert registriert sein muss.

Schritte:
  1. Führen Sie an einer MS-DOS-Befehlseingabeaufforderung das Dienstprogramm "sdetable" aus, um eine Multiversioned View zu erstellen.
    sdetable –o create_mv_view –T code_mv –t code_enf 
    –i sde:sqlserver:myserver\ssinst –D code –u sarja –p not4u
  2. Sie können die Prozedur "create_version" verwenden, um eine Version zu erstellen, in der Sie die Änderungen vornehmen.
    EXEC sde.create_version 'sde.DEFAULT', 'version2', 1, 2, 'version for my mv edits'
  3. Öffnen Sie ein Transact-SQL-Abfragefenster, und führen Sie die gespeicherte Prozedur "set_current_version" aus.
    EXEC sde.set_current_version 'version2'
    HinweisHinweis:

    Wenn Sie die aktuelle Version nicht festlegen, wird beim Abfragen jeweils der aktuelle Status der DEFAULT-Version angezeigt. Wenn Sie die aktuelle Version festlegen, wird der Status gecacht. Sie verfügen dann nur über die statische angegebene Version.

  4. Starten Sie eine Editiersitzung, indem Sie die gespeicherte Prozedur "edit_version" ausführen und 1 angeben.
    EXEC sde.edit_version 'version2', 1

    "1" bedeutet, dass eine Editiersitzung gestartet wird.

  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 Datensatz in die Tabelle eingefügt.

    INSERT INTO code_mv 
    (codenum, propowner) 
    VALUES (456, 'Anjo Badsu')
    TippTipp:

    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.

  7. Beenden Sie die Editiersitzung, indem Sie die gespeicherte Prozedur "edit_version" ausführen, jetzt aber den Wert 2 angeben.
    EXEC sde.edit_version 'version2', 2

    "2" bedeutet, dass eine Editiersitzung beendet werden soll.

  8. 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.
    EXEC sde.delete_version 'version2'

Verwandte Themen


3/6/2012