[PostNAS Suite] NAS Import nach SQL Server

Jäger, Frank (KRZ) F.Jaeger at KRZ.DE
Mi Sep 7 09:15:02 PDT 2016


Hallo,
das mit dem Trigger sollte man nicht unterschätzen. Der fertige Code sieht harmlos aus, aber da steckt viel Arbeit drin. Es gab einige Zwischenversionen, die in Sackgassen endeten.

Wenn man die PG-Syntax in M$-Syntax umschreiben kann, mag das einfach gelingen. Wenn man es ganz neu schreiben will, muss man sich schon reinknien.
 
Erst als ich genügend Informationen von Seiten der PostNAS-Entwickler *und* auch von Seiten der ALKIS-Hersteller miteinander kombiniert habe, ist es gelungen, die letzten Fehler aus dem Trigger zu bekommen. Bis dahin bin ich immer von falschen Voraussetzungen ausgegeben.

PostNAS:
 Erst werden alle INSERT in der NAS-Datei abgearbeitet, dann wird die Datei ein zweites Mal durchlaufen und die DELETE usw. werden in die delete-Tabelle eingetragen.

ibR:
 Um einen Sekundärbestand mit Vollhistorie per NBA aufzubauen, legt man den Stichtag weit in die Vergangenheit und gibt zunächst einen Grundbestand aus, der leer ist.
 Der erste Aktualisierungslauf bringt dann alle Änderungen (alle Zwischenstände!) mit, die seit dem Beginn aller ALKIS-Zeiten erfolgt sind.

Daraus folgt für ein Objekt, dass bisher schon mehrfach geändert wurde:
  Alle historischen Versionen eines Objektes kommen in einer NAS-Datei.
  Der erste PostNAS-Durchlauf trägt das Objekt mehrfach als aktuell ein.
  Der zweite PostNAS-Durchlauf trägt mehrere Änderungssätze für das Objekt in die Delete-Tabelle ein.
  Jeder Eintrag in die delete-Tabelle löst den Trigger einmal aus.

Wenn der Trigger ausgelöst wird, findet er also folgendes vor:
  Er soll eine Vorgängerversion eines Objektes terminieren (endet=), es gibt aber mehrere noch nicht terminierte Objekt-Versionen in der Datenbank.
  Er darf nicht einfach alle terminieren, sondern er muss die richtige Version finden, den unmittelbaren Vorgänger.
  Spätere Aufrufe des Triggers finden bereits terminierte Versionen des Objektes und auch einen Restbestand an aktuellen Versionen.

Am Ende sollte genau eine aktuelle Version übrig bleiben, oder im Falle von DELETE als letzte Operation auch keins.


MfG
F. Jäger


Von: NAS [mailto:nas-bounces at lists.osgeo.org] Im Auftrag von Gunter Becker
Gesendet: Mittwoch, 7. September 2016 16:43
An: PostNAS Suite - ALKIS, ATKIS, ABK - NAS Schnittstelle via ogr2ogr
Betreff: Re: [PostNAS Suite] NAS Import nach SQL Server


Trigger und Prozeduren sollten kein Problem darstellen.   ..

Viele Grüße, Gunter


-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : smime.p7s
Dateityp    : application/pkcs7-signature
Dateigröße  : 4264 bytes
Beschreibung: nicht verfügbar
URL         : <http://lists.osgeo.org/pipermail/nas/attachments/20160907/860658cc/attachment-0001.bin>


Mehr Informationen über die Mailingliste NAS