Arbeiten mit Schemaänderungen
Dieses Thema gilt nur für ArcGIS for Desktop Standard und ArcGIS for Desktop Advanced.
Beim Erstellen eines Replikats werden Daten und Schemas aus der Parent-Geodatabase in die Child-Geodatabase kopiert. Die Daten bestehen aus den zu replizierenden Zeilen aus den Datasets im Replikat. Das Schema besteht aus den Feldern, Domänen, Subtypes und weiteren Eigenschaften zur Beschreibung der replizierten Daten.
Anfänglich sind die Schemas in beiden Replikaten identisch, doch mit der Zeit werden an den einzelnen Replikatschemas möglicherweise Änderungen vorgenommen. Zum Beispiel können in einem Replikat zusätzliche Felder zum Abschließen eines Projekts erforderlich sein, während im relativen Replikat möglicherweise eine neue Domäne auf ein vorhandenes Feld angewendet werden muss. In diesem Fall sind die Schemas der Replikate nicht mehr gleich.
Folgende Funktionen wurden für die Arbeit mit Schemadifferenzen in Replikaten bereitgestellt:
Beibehalten von Schemaunterschieden – Sie können festlegen, dass Replikate Schemaänderungen unabhängig voneinander vornehmen können. Die Geodatabase-Replikation ist so konzipiert, dass die meisten Schemaunterschiede zwischen Replikaten zulässig sind. Auf diese Weise kann die Datensynchronisierung in den meisten Fällen weiterhin problemlos durchgeführt werden.
Wenn Sie eine Schemaänderung auf ein Replikat anwenden, jedoch nicht auf das andere, müssen Sie mit den folgenden Problemen rechnen:
- Nicht synchronisierbare Änderungen – Bei der Datensynchronisierung werden nur Änderungen für Tabellen und Felder importiert, die beiden Replikaten gemeinsam sind. Wenn eine Änderung an einem Feld vorgenommen wird, das sich nicht im relativen Replikat befindet, wird die Änderung beim Import der Änderungen nicht übernommen. Ein weiteres Beispiel bildet ein geometrisches Netzwerk, das aus einem Replikat, aber nicht aus dem anderen entfernt wird. In diesem Fall wird die unverbundene Knotenklasse entfernt. Daher werden Änderungen aus der relativen unverbundenen Knotenklasse nicht angewendet.
- Ungültige Werte – Beim Synchronisieren der Änderungen werden Änderungen übernommen, die Domänen, Subtypes, Konnektivitätsregeln und Beziehungsregeln verletzen. Mit den Validierungswerkzeugen des Editors können Sie die neu importierten Werte überprüfen.
- Datensynchronisierungsfehler – Können auftreten, wenn Sie an beiden Replikaten manuell eine Schemaänderung vornehmen. Sie möchten z. B. einer Tabelle ein Feld hinzufügen. Stellen Sie sicher, dass in allen Fällen genau dieselbe Schemaänderung vorgenommen wird. Wenn ein Unterschied vorliegt (wenn ein Feld z. B. in einem Replikat eine Zeichenfolge und im anderen einen Ganzzahlwert enthält), wird bei der Datensynchronisierung ein Fehler ausgegeben.
- Nicht unterstützte Änderungen – Manche Typen von Schemaänderungen können bei der Synchronisierung zu Fehlern führen, obwohl beim Vornehmen der Änderung keine Warnung angezeigt wird. Solche Änderungen können vom Geodatabase-Replikationssystem nicht erkannt werden. Dazu zählen Vorgänge auf Datenbankebene, beispielsweise die Änderung von Berechtigungen für Tabellen in der Datenbank. Wenn für replizierte Daten z. B. Lesezugriff festgelegt wird, wird beim Versuch, die Änderungen aus dem relativen Replikat zu importieren, ein Fehler ausgelöst.
Anwenden von Schemaänderungen über Replikate hinweg – Das Ändern des Schemas eines Replikats, um es an das Schema eines relativen Replikats anzupassen, erfolgt vollkommen separat von der Datensynchronisierung. Zu diesem Zweck werden drei Werkzeuge bereitgestellt: "Replikatschema vergleichen", "Replikatschema importieren" und "Replikatschema exportieren". Die Werkzeuge sind in ArcMap in der Werkzeugleiste "Verteilte Geodatabase", im Kataloginhaltsverzeichnis im Untermenü "Verteilte Geodatabase" und als Geoverarbeitungswerkzeuge verfügbar.
Die Werkzeuge werden im Rahmen eines zwei Schritte umfassenden Vorgangs verwendet. Zuerst wird das Werkzeug "Replikatschema vergleichen" ausgeführt, um eine XML-Datei mit den Schemaänderungen zu erstellen, und anschließend werden diese Änderungen mit dem Werkzeug "Replikatschema importieren" importiert. Wenn Sie in einer nicht verbundenen Umgebung arbeiten, müssen Sie zuerst das Werkzeug "Replikatschema exportieren" ausführen, um das Schema mit den Änderungen in eine XML-Datei zu exportieren. Diese Datei kann dann auf Medien wie CDs oder DVDs übertragen werden, um die Eingabe in das Werkzeug "Replikatschema vergleichen" zu ermöglichen.
Im Folgenden finden Sie eine Liste mit Schemaänderungen und Hinweisen, ob sie übernommen werden können oder nicht:
Hinzufügen |
Ändern |
Entfernen |
|
Feld |
J |
J (Domänen) |
J |
Domäne |
J |
J |
J |
Tabelle/Feature-Class |
J |
J (Domänen, Felder hinzufügen/entfernen) |
J |
Geometrisches Netzwerk |
N |
N |
J |
Topologie |
N |
N |
J |
Feature-Dataset |
N |
N |
J |
Beziehungsklasse |
N |
J (Felder hinzufügen/entfernen, Domänen) |
J |
Das Hinzufügen einer Feature-Class oder einer Tabelle zu einem Replikat ist mit den oben beschriebenen Werkzeugen nicht möglich. Stattdessen müssen Sie ArcObjects-Code ausführen. Anzeigen eines Beispiels für diesen Code
Entfernen von Daten aus einem Replikat – In Replikat-Geodatabases wird jeweils eine Liste der Datasets gespeichert, die an den einzelnen Replikaten beteiligt sind. Wenn Sie eines dieser Datasets löschen, wird eine Warnung angezeigt. Wenn Sie den Löschvorgang fortsetzen, wird das Dataset aus der Liste der Replikat-Datasets entfernt. Mit der ArcObjects-API können Sie Daten wieder einem Replikat hinzufügen. Beachten Sie außerdem Folgendes:
- Wenn Sie eine Tabelle oder Feature-Class entfernen und dem Replikat wieder hinzufügen möchten, müssen Sie Code ausführen. Eine einfache Neuerstellung reicht nicht aus.
- Wenn Sie ein geometrisches Netzwerk oder eine Topologie entfernen, können Sie sie nicht wieder dem Replikat hinzufügen. Die Replikate werden weiterhin synchronisiert, allerdings wird das Synchronisieren von Topologieausnahmen nicht unterstützt, und es können auch keine Änderungen an unverbundenen Knotenklassen synchronisiert werden.
- Das Entfernen eines Feature-Datasets und das erneute Hinzufügen der Klassen im Replikat hat keine Auswirkungen.
- Beziehungsklassen können nicht entfernt und dem Replikat wieder hinzugefügt werden.
Identifizieren von Schemaunterschieden – Wenn Sie die Schemaänderungen genau überwachen möchten, können Sie mit den Werkzeugen die Replikatschemas vergleichen und Datenänderungen identifizieren. Der Assistent "Replikatschema importieren" listet die Schemaunterschiede auf.
Empfehlungen
Im Allgemeinen sollten Schemaänderungen möglichst vermieden werden. Schemaänderungen können zu Inkonsistenzen zwischen Replikaten führen, zudem kann durch den zusätzlichen Aufwand die Performance beeinträchtigt werden. In manchen Fällen müssen Schemaänderungen jedoch übernommen werden.
Im Folgenden finden Sie einige Empfehlungen für die Arbeit mit Schemaänderungen:
- Sperren Sie das System – Stellen Sie sicher, dass die Personen, die das System verwenden, mit den entsprechenden Berechtigungen arbeiten. Möglicherweise müssen Sie Anwendungen schreiben, mit denen bestimmte Typen ungeplanter Schemaänderungen verhindert werden, z. B. das Hinzufügen oder Entfernen einer Spalte.
- Führen Sie regelmäßig Schemavergleiche durch – Da die Replikation fehlertolerant ist, werden Systeme, in denen Synchronisierungen ausgeführt werden, durch die Schemaänderungen mit hoher Wahrscheinlichkeit nicht unterbrochen. Es ist jedoch empfehlenswert, in regelmäßigen Abständen einen Schemavergleich auszuführen, um sicherzustellen, dass ungeplante Schemaänderungen nicht übernommen wurden.
- Führen Sie die Synchronisierung erst aus, nachdem ein Verwaltungs-Task abgeschlossen wurde – In einigen Fällen ist es erforderlich, temporäre Schemaänderungen anzuwenden, um einen Verwaltungs-Task abschließen zu können. In manchen Organisationen muss z. B. ein geometrisches Netzwerk entfernt, dessen Registrierung als versioniert aufgehoben, dann neu erstellt und letztlich erneut als versioniert registriert werden. Solange das Netzwerk nicht erneut als versioniert registriert ist, tritt bei der Datensynchronisierung ein Fehler auf.
- Wenden Sie Schemaänderungen auf das gesamte System an – Wenn Schemaänderungen angewendet werden müssen, wenden Sie diese immer in strukturierter Weise auf das gesamte System an. Sie können diesen Vorgang von oben nach unten ausführen, wobei die Änderungen zuerst auf das Stammreplikat angewendet und dann nach unten weitergegeben werden.